Você está na página 1de 32
ANO 1 N° O1 MAIO 1988 C28 240,00 ener Graficos Slots Sistema Copiador impressora Conhega de Transfira o potencial Gravacao Seu aren para disco do MSK 100 DICAS TECNICAS E TRUQUES DE PROGRAMACAO ‘Noseos vrs podem ser encontades om inaras @ljas de computagdo, Seo seu here ou tomecedor habitual ndo os Wer disponiveis, ere em contalo conosco peo telefon (011) 49-3202, So voc$ ndo est recobendo seu Doletm gratutamente pelo coreo, ou tem algum amigo que ‘gostaria de recebé-Io, no dese de enviar © cupem abako & EDITORA ALEPH - C.P. 20707 - CEP. (01498 - SAO PAULO:SP. snore a, toa Dare ets tex patyesraae ‘RETO RESPONSAVEL "Senalo Fars meron réouca Rewisho ve TexIO (aurora Pes soot won ara temdt rds Seni tho at pice arte ees fu erreaceelteeecinaed tn ceaee, agen soency SSaees ne ec Ricsinne pono Stas eee ae CONEXAO MSX IMPRESSORA GRAFICA OS VIRUS BINARIUS . TRANSFIRA SEUS PROGRAMAS DE DISCO PARA FITA E VICE-VERSA GERANDO SONS NO MSX ... SLOTS E EXPANSOES . © SISTEMA DE GRAVAGAO CASSETE NO MSX MENUS E TABELAS NA SCREEN 2 JAWBRAKE, SEQOES MAXIMAS E MINIMAS ..... DICAS ... MATEMAGICA. JOGOS E HIGH SCORES LIVROS Através da Revista CPU, uma publicagto da Aguia Iniormatica, formulamos uma nova preposta na divulgacdo da informatica. (Os assuntos serfo tralados da maneira mais profunda e técni- ca, sem abrir mo de uma linguagem que seja acessivel a todos. 'Nosso objetivo é fazer com que todas as possibilidades do MSX ssejam comentadas, a fim de que 0 usuério possa trar 0 maior proveito deste equipamonto. ‘Com o langamento de CPU, langamos no mercado, também, uma revista que ir divulgar projetos de hardware e software em con- junto. Sergio projetos como cartio de 80 colunas, interface AS 232, etc, Desde jé, convidamas voc® a participar, enviando-nos suas descobertas, seus programas e dicas, bem como suas sugesibes © ceticas. ‘Com relago aos artigos publicados, informamos que 08 autores ‘assumiram 0 compromisso de responder’a todas as cartas que nos Ssejam enviadas. Portanto, em caso de dtvida, crfica ou sugestio, nao deixe de nos escrever. Ela serd bem recebida e vot ndo ficaré sem resposta, st Govgaro Mvete\ee INDICE BSB Conexao MSX - impressora ratica ‘Um dos maiores desafios para o usus- rio da linha MSX é, sem davida alguma, a realizegio de uma cépia da SCREEN 2 ‘em uma impressora gra. xistem dois métodos de se fazer isso: © primeiro usa as tabelas da VRAM © 0 segundo testa diretamente os pontos na tela, © objetivo deste artigo € fazer uma comparacéo em termos de velocidade ‘complexidade dos dois métados para um determinado tipo de e6pia, ‘Todas as rotinas apresentadas neste artigo foram desenvolvidas e testadas em ‘um micro HOTBIT e em uma improssora Ménica da Blebra, ALPTOUT Esta 6 uma rotina importantissima da ROM do seu MSX, pois €cla quem envia para a impressora 0 eédigo do caracter a ser impresso, Para podermos.utlizé-la corretamente, 6 necessério © wso de uma ppequena subrotina em linguagem de mé- quina. E, mesmo que vooé nio tenha ex- perigncia no assunto, iré entondé-la fa- cllmente. Existe um registrador do Z-80 chama- 0 “acumulador” ou, simplesmente, re- gistrador “A”. A LPTOUT enviaré para 8 impressora 0 c6digo do caracter que es- tiver armazenado no acurulador, quando este for chamado através de um CALL, {que € andlogo 2 um GOTO do BASIC. Para armazenarmos no acumulador wm determinado valor, fazemos uso da ins- trugéo LOAD, que significa “carregar’ A sintaxe desta instrugdo € LD_A,XX, Feito isso, devemos chamar a rotina com um CALL relativo so seu enderego de fentrada, que, no caso da LPTOUT, € (OOASH’ Em ditimo lugar, deveré haver 0 re- torno a0 BASIC, 0 que ¢ feito quando a instrugdo RET (RETURN) for executada. (© nosso programa, em linguagem de méquina,ficard assim: E000 3EXX— LDAXX F002 CDAS00 CALL OOASH B00S RET A primeira coluna & relativa aos ende- egos; a segunda As instrugSes em hexade- ‘imal; © a tereeira, aos meneménicos do 2-80. © enderego inicial da rotina foi defini do com EO00H por ser uma posigio de ‘meméria relativamente alta e no reque- rrer maiores cuidados na maior parte dos programas em BASIC, Para chamarmos a rotina através do BASIC, basta definirmos em uma chama- da USR seu enderego de entrada, por ‘meio de um DEF USR. Feito isso, basta pokearmos em E001H © e6digo do caracter desejado e acessar- mos a rotina através de uma declaracio USR, como, por exemplo, um G=UsRO. ACOPIA Para entendermos como © primeiro método funciona, € necessério fazermos ‘um pequeno estudo da VRAM do MSX, {quando em SCREEN 2. Existem duas tabelas fundamentas pa rao nosso caso, Estas slo a de padroes © a de cores. A tabela de padrées somtém a imagem propriamente dita, inicia no endereco zero ‘termina em 6143, ANTONIO F. S, SHALDERS Os pixels do video esto organizados de acordo com 0 esquema da figura I, dispostos horizontalmente em octetos na seguinte ordem: o primeiro é formado pe- Jos. pixels relatives 8s coordenadas (00)...(1,7), até 0 oitavo, que representa 2 scqiiéncia (7,0)..(7,D. © nono octeto representado por (8,0)..(15,0)¢ assim su cessivamente até 0 Gtimo cteto, de ni mero 6144, que corresponde 30 grupo (@48,191)..(255,191) Cada um desses octetos pode ter so- mente uma cor, que esté armazenada em uma tabela espectfica, que iniia em 8192 e, também, tem 6144 bytes de compri- mento. Se mudarmos a cor de um nico elemento de um octeto, a cor do octeto inteiro ser modifieada. Aliés, este & um dos poucos defeitos do MSX! (© que esse primero método faz & jus- tamente pequisar essas duas tabelas e, apés tratar corretamente os dados, haver aimpressio, Voltando a examinar a figura 1, po- demos notar que os bytes relativos a cada ‘octeto esto dispostos na horizontal, e is- ‘50 n0s gera tim grave problema: quando impressora entra em modo grafico, ela & informada que Ie serd enviada uma ca- deia de n caracteres ¢ estes deverso ser impresioe no formato binério, que itt ‘acionar uma determinada combinagio de ‘ito agulhas. O problema é que essas agu- Thas esto dispostas na vertical, sendo a ‘agulha superior correspondente a0 bit mais significative e a inferior a0 menos significativo. ‘A maneira mais fécil de contomar © problema é fazendo uma impressio na Vertical. Basta fazermos uma varredura adequada da tabela de padrdes ¢ imprimi- cru Ja, Examine o programa da listagem 1. A vvarredura usada é justamente para este ti- po de impressfo. A variével j contém 0 ‘enderego de cad octeto a ser enviado pa- ra aimpressora, © programa da lstagem 2 usa este al- ‘goritmo que agora Ihes serd explicado em FTHENPOKE&HEOO] , 255ELS EPOKE&HEOO1, SL 60090 G=USR(0) 60100 NEXTX,L 60110 LPRINTCHRS (10) + 60120 NEXTC 60130 LPRINTCHRS (27) ;"A’ HF417,0 LISTaGsM 3 HRS (13) : POKER 50000 ' COPIA VERTICAL NORMAL (MSX) 50001 ‘ ANTONIO FERNANDO S. SHALDERS — 1988, 60000 DEFINTA-Z: FOREN*OTOS : READCO: POKER. HEOOO+EN, CO:NEXT 60010 DATA 62,0,205 E000 60020 F=PEEK (RHF3EA) : POKERHF417,1 60030 LPRINTCHRS (27) ;"A";CHRS (1) 60040 FORXX=0T0255 60050 LPRINTCHRS (27) ;"K" (005 60060 FORYY=191T00STEP-1 60070 IFPOINT (XX, YY) =FTHEN60090 60080 POKERHEOO1,1:GOTO60100 60090 POKE&HEOO1,0 60100 G-USR (0) 60110 NEXTYY:LPRINTCHRS (10) ; :NEXTXX 60120 LPRINTCHRS (27) ;"A” ;CHRS (13) : POKER HF417,0 65,0, 201:DEFUSR=3H HRS (192) ; CHRS TABELA DE PADROES DA SCREEN 2 255 iss aes FIGURA 1 GRUPO LOCAL (FORMADO POR 8 OCTETOS CONSECUTIVOS) ‘8 OCTETOS VERTICAIS i= azT MsB LsB 2T_26 25 24 23 22 2120 BYTE 8xn OcTETOs BYTESxn +1 (a = niimero natural entre 0 ¢ 767) FIGURA 2 © nosso objetivo é tomar os octetos reais em octetas verticais, © que & conse guido agreganvdo-se-os bits de mesmo pe- So de cada um dos octetos reais: 0 primei- +o octeto vertical soré formado pela con- ccatenago dos bits mais significativos dos ‘octetos reais, e assim sucessivamente Se usarmos um método numérico para tal, a rotina se tornaré extremamente len- ta, Por isso, fago uso de um método al numérico, pois, além de ser muito. mais ripido, é compacto, programa da listagem 4 faz exata- mente isso. A matriz alfanumérica BS, de limensbes 8x1, contém as strings binsrias rolativas 0s dito octetos, sendo trans formada na varifvel US em um octeto vertical. © resultado 6 armazenado no acumu- lador, sendo, posteriormente, impress. programs da listagemn 3 faz © mes- mo tipo de c6pia, usando o algoritme do segundo métedo, sendo muito mais eli- ciente. Este programa ndo passa do mes- mo programa ds listagem 3 60m os loops alterados, A AMPLIACAO Para fazermos uma ampliacio, © pri- ‘meiro método se torna extremamente i ficiente. No caso do primeira método, se dese- jarmos uma inipressio. multiplicada por lum fator de dois, teremos que ampliar um ponte dilatando-o na horizontal e na ver- tical ‘A expansio nu horizontal é trivial de ser feta, pois basta imprimiros duas ve~ 2es seguidas cada octeto. Mas para am- pliarmos na vertical, esbarramos em um problema: © cédigo ‘do octeto expandide passard a ter 16 bits ea impressora s6 tem Dito agulhas. A solugso é quebrarmos esse {c6digo em dois menores de ito bits, en- vviando primeira para a impressora os oito bits mals significativos, e, em sepuida, os ito menos, (© racioeino 6 © mesmo para am- pliagdes de fator 3 em diante (36 que 0 primeiro método s6 permite amplagies ‘miltiplas do 2), E como se a palavra eMSX" —fosse transformada em MMSSXX’ por diante MMMSSSXXX", assim Os programas da listagem 6 ¢ 7 fazem isso pelo primeiro método € os restantes pelo segundo. (© segundo método é muito mais ade ‘quado quando se trata de c6pias que re- ‘querem algoritmos mais sofisticados € sio muito mais répidos © féceis de serem compilados, pois até © compilador COMP32 6 eapaz de fazé-lo Por diltimo, serio dadas tabelas para auxiliar a alteragdo do programa bésico {do segundo método para obtermos cépias ‘ampliadas por um fator ne como fazer reversio de impressio para cada tipo. cpu LISTAGEN 4 50000 ° COPIA RORTZORTR. NORMAL (HS) 50001 * ANTONIO FERNANDO S. Si DERS 1988 50000 DEF INTA EOOO+ER 40010 OTA 62,0,205, 45,0,201: £000 40020 F=PFFKCRHFSER) 170 60030 LPRINTCARS 040 FORL=0T028: 60050 LPRINTCARS( 27); + 60060 FORC=OTURABSTEREIACKAC 0076 FORK=OTO7 sake 60080 S.(KD=V2EEK A) :R?=VPEEK (48192) 69090 S.8(X)=21G478(S7RENGSCB, "0" 43 Is (8L(30),8) 40100 FRPHODI8¢)=7HENGLS(XD=B1R5(255) SOTTO NEXTX 40120 FORX=OTO7:=44 40130 SES=AIOE 5.510} CHRO) gC fi) MAIDB(SLST), +108(SL8(3),8,1)4 (SLBES), 8, LIAMLO 60150 POKEBHEDOT 60740 NEXT, egv70 2UuNtCH H407,0 AR B(27D "4" pCR 09 ARSC } 60960 FORIX-0T0255 40070. IFPOENT Xx, 1 40080 POKEBHEOOT 60090 POKERHEDO' 40100 B=U8R(0) 60710 HEXTR 60120 LPRIN HF417,0 PRUATCHRS( 10) 2NEKTEY S(T) "Fp DeRSUISI 20K! ListAges & 50000 * COPIA AORIZONTAL AMPLIADE (MSH) 50010 * ANTONIO FERNANDO S.. SHALD 1988 60000 DEFINTA-Z2F0REN=0705 8640: FEN EK 60010 ONT 82,0, 205, 165,020 208 0 60040 & 40050 FORL=0F023: 60060 PRINTEAREIAD ; 60070 FORC=OTOZABSTEPESH=KS 40000 FORK=OT07 X44 40090 SL CK)=WPEEK (A) $2P-VPEEA (#8192) 6100 SLSCAI=RIGHTS(STRINGS(S, "2°248 NS Sair” 180 ASSINKEYS? IF AS="" THEN 160 170 " Analiza opcao desejada 180 TF AS="8" OR AB=">" THEN EHO 190 IF AS="1" THEN 230 200 1 AS="2" THEN 880 210 GOTO 140 220 " Copia de Disco p/ Fita 730 cis 240 PRINT ita ~ 250 * Apresentacao do diretorio 260 PRINT: FILES 210" Espera none do arquivo 280 PRINT: PRINT + LINE INPUT “Digite 0 owe do arquivo: “KE 290 " Oasvia prograna caso tetha erro 300 OW ERROR GOTO 670 310 * Aore arquivo 320 OPEN NS FOR INPUT ASH 300 " Obtea dados sobre 0 arquivo 240 FEASCCIAPUTS(1 AT) 350 IF FO254 THEN 790 360 XS=INPUTS(6, #1) 320 ° Fecha arquivo 380 CLOSER 390 * Calcula paranetros 400 1S 410 PI=(RSCCMIOS(XS,2,1)))8256+( ASCO $08,1,1)) 420 PFARSC(MIDE XS, 4,1)))8256+(ASC(MID $08,3,1))) Copia de Disco p/ F 490 PE=CASC(HIDS(XS, 6,19) ¥2564(RSCUMID $08,5,1)) 440 THECPF-PL 450 ' Transforna datos decinais en Hex. 460 TAS=RIGHTS("0000"sHEXS(TA) 4) 470 PIS=HEXS(PL) sPFS=HEXS(PF) :PESHEXS( Pe) 480 Fpresenta dados sobre 0 arquivo 490 PRINT “Brquivo 2° 8 500 PRINT "Foraato #°;2 IF F=254 THEN P RINTASSENBLER™ 510 PRINT “Endereco fnicial + t4";PIS 520 PRINT “Endereco Final ¢ &4";PFS '530 PRINT “Ponto de Execucao + H";PES 540 PRINT “Tananho + AH” ;THS 550 * Apresenta conando de leitura RINT “Bload™/CHRS(34 580 PRINT: PRINT 4 LEFBUS 686 (0 PES," BH" PES 590 PRINTZPRLKT 4600" Apresenta tecla a ser pressionada 4610_IF P1(32000! THEN PRINT "Tecle “F4° "ELSE PRINT "Tecle “F5’.” 620 " Coloca o cursor en posicao 630 LOCATE 0,7 40 Terwind 2 execucao 50 EN) 660" Tratanento de erros 470 CLOsE® 480 CLs 890 PRIM Tratanento de Erros 700 PRINT: PRINT ‘710 1F ERR=42 THEN PRINT 0 Drive espe Cificado nao existe |” 720 IF ERR=56 THEN PRI quivo esta incorreto ! 730 IF ERR=60 THEN PRINT ~ 0 Disco esta COR probleaa de forsato !” 740 IF ERR=S3 THEN PRINT 0 Arquivo na o existe!" 750 PRINT: PRINT “ Tecle algo para cont inar 760 AS=INGEVS: IF AS="" THEN 760 770 RESUME 20 700 ° Trataneato de arquivos 120 BSAVE 790 CLOSER 00 CLS 810 PRINT” 820 PRINT? PRINT £830 PRINT ~ 0 firquivo especificado rao se encontra _gravado con 0 BSINE do ASX DISK BASIC’ ‘840 PRINTS PRINT " Tecle algo pata cont inuar «.” * 0 None do ar -- Tratanento de Erros u ASHIMKEYS: IF AS="" THEN 850 coro 20 " Copia de Fita p/ Disco RESTORE 890 DATA CD,£1,00,08,21,00,C0,08,10,€5, C0, £4,00,C1,€1,08,77,23,10,F4,00,E1, 08,21, 10,00, 06, 06,€5,05,C0,€4,00,c1, 1,08, 77,23,10,F4, 07 900 " Braazena dados en ASSEARLER 910 FOR P=0 TO 42 920 READ AS ‘930 PORE (RHEDSO)¢P, VAL(“BHT +A) 940 NEXT P 950 DEFUSR-RHEOSO 980. OEFFHPE(K)=PEEK(X)+256PEEK(XE1) 970 * presen‘acao 990 CLS 990 PRINT sco ~ 1000 PRINT © Gravador 1010 PRINT = PRINT * wanda pronto 1020 AB=IMCEYS? 1F AS="" THEN 1020 1030 * Leitura de paramstros 1040 X=USR(O)? HOTOR OFF 1050 ° Calcuio do none 1060 FOR R=(RHCOOR) TO (RHCOOF) 1070 PS=CHRS«PEEK(R)) 1080 NS=ASHPS 1090 NEXT R 1100 * Obten formato 1110 F=PEEK(4HC000) 38388 sa — Copia de Fita p/ Di PRINT "=-——-—---~ Prepare E tecle algo q Ti) mela |e) SASIPA, ll CHEGA DE Videotexto, SALIPA Sut, Aruanda, e mafs o mundae fo seu micro. Femos &fts (Aopte, PSX, f8f7-PE} que fabiffia o seu micro a cone- ctar quafquer correfo Sav ou base de dados -FONES (ons-z7s0(vor} re a107 MOEN 1120 IF (9208 THEN 20 1130 * Calcula paranetros 1140 PI-FHPE(GHCOTO)="Ponto inicial 1150 PF-FHPE(RHCOIZ)#"Ponto fital 1360 PEENPE(RHCOLA) "Ponto execucao 1120 THeCPF-PLD+1 1180" Transforna dados decinais en HEX 1190 PIS=HEKS( 1) sPFS=HERS(PFD#PES=HEXS (PE) TAS=RIGHTS("0000"#HEKS(TA), 4) 1200 * presenta dados sobre o arquivo v0 cs 1220 PRINT “Brquivo + "HS 1230 PRINT “Fornato + ASSEMBLER” 1240 PRINT “Endereco Inicial : AH";PIS 1250 PRINT “Endereco Final © &h";PFS 1260 PRINT “Ponto de Execucao * AH"; PES 1270 PRINT "Tananho + BK°;THS 1280 * presenta conando Ge leitura 1290 PRINT + PRINT + PRIAT "Bload”;CHRS (340, "CRS#” NS; CHRSC34) 1300" Apresenta conando de gravacao 1310 PRINT PRINT + PRINT “Bsave" ;CHRS (34) NB ,CHRS (34) ;” AH” SPIS”, BH" PFS; An PES 1320 PRINTSPRINT 1330 ° presenta tecla 2 ser pressionad a 1340_1F P1(37000! THEM PRINT “Tecle *F4 “2° ELSE PRINT "Tecle “5°. 1350 " Coloca cursor ex posiczo 1340 LOCRTE 0,7 1370" Ternina a evecucao 1380 €H0 Crraadao, forum ## 86 fntefro no teclado efetrGanico com comunicagao assrncrona. Gerando sons no MS GERANDO SONS NO MSXx © sou MSX possui um processador de fudio modelo AY-3-8910, produzido pe- la General Instruments (EUA). Este inte- ‘grado € do tipo LSI (Large Scale Integra- tion) e, embora no seja 0 processador de udio mais sofisticado do mercado, & um dos mais facilmente encontraveis, algm de ser de Feil implementagao e operagéo. © BASIC possui uma instrugde que permite trabalharmos diretamente com 08 seus 14 rogistradores, 0 SOUND, cuja sintaxe_ & SOUND "REGISTRADOR, VALOR. ‘Além do SOUND, existe a macro-lin- guagem PLAY, que’ nos permite fazer ‘dons trabalhos, desde simples vinhetas até cords. © processador de Susio, ow simples mente PSG (Programmable Sound Gene~ ator), postui 3 canais, com 8 oitavas ca da, num total de 96 nots musicais dis poniveis, além dos geradores de rutlo ‘envoltéria, © PSG também controla a Ieitura de dados do gravador & as portas multi-uso de oto bits, que so as entradas para joystick. COMO GERAR UM TOM: Para gerarmos um tom de freqiéncia ré-determinada em um canal de Sudo, flevemos carregar nos registrados rela” tivos os ajustes de. frequencia fino © rosso do canal em questo, selecionar @ Snvoltia desejad, 0 volume de sata & stuago ou nfo do misturedor de cana O maior mistério para muitos € como calcula os valores nevssérios& carga dos ANTONIO F. S. SHALDERS regstradores de ajuste de freqiéncia, 0 que é, na realidade, muito simples, pois basta aplicarmos a seguinte fSrmula, a fim de obtermos © valor principal: N= INTC/F/32), ‘onde C € 0 clock do seu computador, em hertz e F & a freqiiéneia deseiada. Os clocks do Hotbit e do Expert sio 3979545 Hz © 3575611 Hz, respectiva- mente, ow seja: aproximadamente 3.58 MHz, Os valores que devem ser atribuidos ‘40s registradores de ajuste fino (AF) © grosso (AG) podem ser facilmente obti- dos pelas expresses abaixo: AF = NMOD 256 AG = N256 E bom notar que a resoligéo. das froqincis obtidas € inversaments pro” Porcional a freqiéncia de manera cxpo- nencil, pis, & media que aumentaros « freqiénce, «resolugo dimin. Na faixa dos 100 Hz, por exemplo, 2 resolisfo chogaa set melhor que 1 Hz Jd na fata dos 3 KHz, a reslucto ica pa- ra cerca de 400 Hz, logo nfo € muito 18- {800 programarmos 0, PSG. parm. gerar fons alternados de 5.000 He ¢ 5.010 Ha, or exemplo, pois os dois tons gerados Seriam identicon ‘A menor freqiéncia que pode see ge- rada é de 4 Hz ea mixin vai am de 60 Hr, 0 que no adianta muito, pois faixa amudivel vai somente até cerca de 16 Kitz se seu ovo for muito bom! ‘A tabela 1 exibe os reistradores do SG e suas respectivas fun REG. FUNCAO 0 ‘AF, canal A 1 ‘AG. canal A 2 AF. canal B 3 AG. canal B 4 ‘AF. canal C 3 AG. canal © 6 ‘Ajuste de freq. centr do rufdo 1 Controle do misturador 8 ‘Volume do canal A 9 ‘Volume do canal A 10 ‘Volume do canal C u A.P, da freq, da envolt, R A.G. de freq, da envolt 3 Tipo de envoltéria, Tabela 1: Os registradores do AY-3-8910. MAIS SOBRE 0 PSG: © PSG possui um gerador de ruido branco que pode ser usado em conjunto ‘ou nfo com os tr canis analdgicos. (© chamado rufdo branco é caracteri- zado. por uma misturaaleat6ria de freqiléncias de amplitudes iguais ow ni. exatamente © chiado que aparece em ‘um aparelho de televisdo quando sintoni- zamos uum canal livre. Efeitos ruitissimo interessantes podem ser conseguidos com © uso. racional deste recurso do AY-3-8910, Um ponto forte do nosso processador de fudio 6, sem divida alguma, a capaci- dade de controle da envoltria. Mas 0 que € envoltéria? A envoltria de um som (ou envelope, como dizem alguns) & a forma ‘com que a intensidade ou amplitude varia fem funcéo do tempo £ gracas 28 diferentes formas de en- volts que podemos distinguir 0 som de Uma guitarra'do-de uma flauta, mesmo ‘que ambos sejam exatamente da mesma freqiéncia. E claro que existem infinitos tipos de cenvoltérias, sendo estas responsdvets pelo timbre ¢ nuances dos sons. A envoltéria pode ser representa desde uma. fang Constante até fungdes ultra complexas. O nosso PSG nio pode simular todos ‘esses tipos de envolt6rias, mas pode simu- Inr qualquer combinagio de envoltrias da forafia “deme de. serra", que inclui & triangular e a constante, gerando efeitos «que chegam a ser estonteantes. (© som das ondas do mar, por exemple, 6 caracterizado por um ru branco, cus, fenvoltria€ da familia senoidal (na teal- dade, € uma sobreposiéo de varias sen6i- ‘es alatGrias), mas podemos obter Stimos resultados coma envoltria triangular! 44.0 som de-uma explosio ou de um sino tem como envaltria uma fungS0 x- ponenkialinversa, do tipo ¥ = 1/ X, mas Podemos obter resultados muito préximos {iso com uma envollria do tipo dente de serra, com a rampa negetiva, o que carac- teriza um infeio abrupto, segukdo de. um decaimento suave do som, © registrador responsivel por isso € 0 13 «¢ poxemos escolher oito upos de en- voltonias de faa dente de serra c cont- tante, ov algumas combinagées destes ‘A tabela 2 mostra 0s tipos de envolt6- rias com as quais podemos programar © PSG. As freqiéncias do gerador de ruido ¢ do gerador de envoltorias também dever ser determinadss corretamente, fim de Gbtermos resultados saisfateros. (© método usado para tal & semelhante a0 do ajste Jos cans analigicos de sf da, Para o ajuste da freqiéneia domsinante do ruldo.branco, no aconseiho usar formulas de espe alguma, ois € melhor escothermos “de ouvi” 0 que mais 0s agradar. Os valores possiveis para carre- ‘garmos o registrador 6 variam de 0 a 31, sendo que, quanto maior este valor, mais ‘grave €0 tom dominante, 46 para o ajuste de freqiiéncia da en- volta, necessitamos de uma frmula do ‘mesmo ‘tipo da que mostramos para 0 ajuste dos canais analégicos de saida: N=C/(1100*F) Com esta f6rmula, podemos obter froqigacias desde 0.1 Ha! s valores a serem armazenados nos registradores de ajuste fino e grosso io achados da mesma maneira descrita ante siormente para os canais anal6gicos. E importante notar que 0 gerador de cenvoltérias est ativo somente quando 0 volume do canal esté no méximo, O CONTROLE MISTURADOR: © objetivo deste controle € combinar, selecionar, ativar ou deativar os eanais d& som e os geradores de envoltéria ¢ ruido, Esta selegdo € feita através do valor atri- buido ao registrador 7 do PSG. Cada bit deste valor tem uma funcio cespecifica , para a parte sonora, sio usa- dos apenas ‘os bits de 0 a 5. Os bits 6 € 7 ‘io usados na verificacéo dos estudos ds portas multi-uso, Convém informar-Ihes que os bits realtivos a este registro so alivos em ze- ro, ¢ suas fungoes 840 mostradas na tabela 3 Se desjanmos hbiitar of canais A B com som puro (em uo) ew canal C om mito, devemos configura re trador 7 com o valor &8 00011100, 03 Sn SOUND 7.36. Um canal pose see ‘Sado para ger tos ero sites: tenors io poderos terms de das Savors diferentes nx rs canals. No Saxo de terms dua, une terf que sr, imitoriament, ura fun constant, 0 sepo volume do cal em questo de- verd ser menor qu et6. Existem diversos editoras musicas © sonoros para o MSX ¢ alguns de altssimo desempenho, como por exemplo, 0 SOUND (p/diseo) ¢ o SUPER SYNTH (aa minha opinio, 0 melhor. Se vooé néo Possuir neahum desses dois programas, Io se deseapere, pois o programa da is” tagem 1, se usado com bom senso, pode teat resultados: muito boas na clabo- sagio de sons complexos. TEserevam-nos enviando sugetées ow ‘em caso de dvds, pois 0 objetivo desta revista € asibiar o usidrio da linha MSX. REG.13 | ENVOLTORIA oi23e9 | In 4567015 | La 8 Lassa wo | TNA u {tml 2 7 B ———_s 4 Taaaa Tabela 2: O registrador 13 ¢ as envolt6- BIT FUNCAO EM ZERO QUANDO Habilita canal A Habilita o canal B Habilita 0 canal C Habilita rufdo no canal A Habilita ruido no canal B Habilita ud no canal C Tabela 3: Fungies dos bits 0 a 5 do regis- xlor 7 do PSG CP LEIA PARTICIPE ASSINE cpu 10 REX ‘2 REM REVISTA CPU - MAIO 1988 ‘30 REM ANTONIO FERNANDO SHALDERS 40 REK 50 REM GERAADO SONS HO ASX 100 KEVOFF:SCREENO=COLORIS, 1:CLERR 110 PRINT "HOTBIT OU EXPERT (W/E)":PRIN T 120 AS=INKEYS:1F AS="H" OR AS="h” THEN (C=8579545H ELSE IF AS="E" OR AB="e" THE W C=35756118 ELSE 120 125 PRINT" FREQUENCIA (4 2 16000)","x VOLUME (0 2 16) (16 liga a envoltoria)” PRINT 190 PRINT “CANAL VOLUNE "3 FA, VAZPRIMT 40 IF Ffs0 THEN Fi 150 PRINT "CANAL. 8 VOLUME. "Fo, VBEPRINT 140 IF FBO THEN FB=4 170 PRINT “CANAL VOLUME "FC, VCEPRENT 180 IF FC=0 THEN Fo=4 190 NACINT(C/FA/32)1 INTICAFCa2) 200 FRENA HOD 256:6R=WA \ 256 210 FB=NB HOO 254368-N8 \ 256 220 FUNC MOD 256:00=NC \ 256 230 INPUT "FREQ. OOKIMRATE 00 RUIDO (0- 31)“ FREPRINT 240 INPUT “TIPO DE ENVOLTORIA ”;TEXPRIN I INPUT "FREBUENCIA, INPUT “FREQUENCIR, PUT “FREQUENCIR, =INTC/FB/32) 250 INPUT "FRED, DA ENVOLTORIA (HIN=.1) MESPRINT: IF VE=OTHEMUE®.1 260 WE=C/C1TOORVE)=FE-NE HOD 256: \ 258 270 PRINT'TOM ATIVO EA (S/N) "; 250 GOSUB6YO: IF RE="S" THEN TAO ELSE 1 F RS="N" THEN TR] 281 PRINT ASSPRINT 290 PRINT"TON RTIVO EM 8 (5/8) “; 300 GOSUB690:IF AB="S" THEN TB-0 ELSE 1 FBSA" THEN TA=2 901 PRINT AS:PRINT 310 PRIAT"TON TIVO EM C «S/N 320 60584908 1F AB="S" THEN TO=0 ELSE 1 F RS="N" THEN 32] PRINT RSEPRINT 390 PRINT*RULDO ATIVO EMA (S/H) 340 GOGURE90: IF AB="3" THEN R=D ELSE t FASE "W" THEN RAB 341 PRINT ASLPRIAT 361 PRENT ABEPRINT 370 PRINT’RUTOO ATIVO EH C (S/N) *; ‘380 60sue69O:1F THEN RC=0 ELSE 1 F AS="W" THEN RC=32 381 PRINT AS:PRINT 390 HeOSM=TAATB+TCHRARRBARCSCLS 400 SOUND 0,FAEPRINT”SOUND 0,"3FA 410 SOUND 1,GREPRINT”SOUND 1,7;6R 420 SOUND 2,FBSPRINT°SOUND 2,";FB 430 SOUND 3,68:PRINT"SOUND 3)"; 68 440 SOUND 4,FCEPRINT SOUND 680 PRINTSTRINGS(13,95)2EN0 690 ASEIMVEYS!1F AS()"S"RNDRS()"W"ANDAS ()"S"RNORBC)"n” THEN 490 6911 fS="S* OR AS="H” THEN RETURN 00 IF A="s" THEN AS=" ‘70 TF S="n” THEN AB vereeas como fazer —MAXIMAS E MiNIMAS Programac@o estruturada Esta é uma nova coluna, numa revista também nova e, como tal, vanes comegar dizendo quais so 08 nossos objetivos. Nesta columa sero discutidus dicas téenicas de programagéo de interesse do principiante © dagueles jé mais avangados. Seré uma coluna aberta 2 crticas © su- testées, que deverio ser envindas drevis. twem nome desta colu Hoje, comegaremos discutindo sobre lum assunto que, para muitos, parecerd Sbvio, mas, ainda assim, & importante pa- a 0 principiante e até para alguns que jf iio so tio prineipiantes. Vamos, pois, falar sobre a progra- smagio estruturada, Esta técnica, tio em ‘moda nos iltimos anos, nada mais € do {que um método de facilitar 0 traballwo do programador através da subdivisio de um programa em subprogran.as mais simple todos eles encadcados logicamente. Muita gente pensa que s6, se pode programar estruturadamente em Pascal, C, Forth, ou outra linguagem eriada, des- ‘de a sua concepeao, para este tipo de pro- {gramagéo, No entanto, podemos progra- mar estruturadamente ‘em qualguer lin: ‘guagem, até em assembler. Um bloco po- de chamar, ou até conter, outros blocos, ‘mas, uma vez chamado um bloco, este de- ve fazer a sua tarefa e retorar 0 coman- {do ao que 0 chamou. Esta descricdo 6 ba~ sicamente, a descrigio de uma sub-rotina, 56 que, com a restrigo de que o ponto de entrada da mesma deve ser nico, e, em- bora possa ter diversas safdas, todas de- ‘vem retornar ao mesmo ponto. Os tipos bésicos de blocos si os se- ntes: decisio, repetigao definida, repe- {isdo indefinida ou condicional blocd I near, O primoiro & 0 equivalente em Basic ‘um bloco if.. then... else, que executa 16 ‘uma de duas ou mais agées, dependendo do uma condigo dada. O segundo é 0 cequivalente & contrucio for... pext, que repete um conjunto de instrugdes por um nndmero de vezes determinada. O teresiro Seria tm blaco que repete um grupo de instrugées até que uma condigdo seja sa- tisfeita. Finalmente, o bloco linear & qual- ‘quer grupo de intrucGes sem nenhum des~ vio. As descrigées anteriores fazem mengo a instrugdes, mas, 0 mesmo & vl lido, igualmente, para blocos completos, ‘ou seja, um conjunto if... then... € consi- ‘derado como uma Gnica instrugdo, assim ‘como uma instrusdo gosub o &. © bloco deve sempre ser ffcil de en- tender. Se um bloco esté ficando mui ‘complicado hora de o subdividir em blo- ‘003 mais simples. Do mesmo modo, o blo- ‘co deve ter apenas uma funcio e esta de~ ve estar claramente definida. Estes blocos devem ser sempre precedidos de co- ‘mentarios explicativos e, n0s pontos mais ‘complexos, ter comentarios especfficos 20 onto cm questao, Estes comentérios dem parecer supérfluos, mas sio a princi pal ajuda na hora de modificar ou depurar uum loco ou programa feito hé algum tempo. Uma outra vantagem de usar a pi _pramagio estruturada € que os blocos so, fem geral, independentes do programa ‘como um todo €, assim, podero ser usa ‘dos em outros programas, facilitando 0 desenvolvimento. Podemos © devemos, pois, formar uma biblioteca com os blocos mais eis para utilizagdo posterior e, aqui, vemos as vantagens dos comentérios de programar usando blocos auto-sufi- cientes, ‘Vamos, agora, dar exemplos do dito cima, com alguns trechos em Basic, sen- do que tudo que for dito € valido para J. L, FONSECA qualquer outra unguagem, BLOCO DE DECISAO. 10 LET A=S: REM VARIAVEL QUE CONTEM 0 VALOR 20 REM O BLOCO SEGUINTE VERI FICA SE A QUANTIDADE EM AE SUPERIOR A UM VALOR DETER- MINADO. 40 IF A> LIMITE THEN PRINT “SUPERIOR” ELSE GOSUB 333 0 © 33) LETA=A+1 334 PRINT “VALOR DE ="; A 335 RETURN Como podemos ver no trecho acima, a linha 40 executa uma de duas acdes, de- pendendo de uma deciséo, sendo que, aps, qualquer delas continia no mesmo ‘ponto, ou seja, na linha $0, Se houvesse Iecestidade de executar mais de ums ins- trugdo em qualquer das opedes, estas de- veriam ser agrupadas dentro de uma sub-rotina e chamada dentro do bloco de decisio, como podemos ver na instru¢a0 ‘que segue o else. Verifique que todos os ppon:0s importantes estio comentados. no programa, o que nos permite entendé-1o a qualquer altura, LOCO DE REPETICAO DEFINI- DA 05 LET A. 10 FOR I=1 TO 10; REM CALCULA OS FATORIAIS ATE 10 20LET A=A*l 30 PRINT LA : REM IMPRIME O NUMERO E SEU FATORIAL 40 NEXT I No programa acima, 0 bloco entre as linhas 10 e 40 ¢ repetido um niimero de- terminado de vezes. Esse niimero pode ser uma constante ou set passado mma varidvel, mas é sempre conhecido na en- trada. No bloco de repetigio indefinida, ao ccontrério do caso anterior, o ntmero de eres a repetir & desconhecido e depende ‘de que se cumpra uma condigdo determi- nada. Essa condigo pode ser testada no ineio ou no fim do bloco, dependendo do feito desejado. BLOCO DE REPETICAO INDEFI- NIDA TESTE DO INICIO 10 IF A=5 THEN GOTO 50: REM ‘TESTE INICIAL. SAI DO BLOCO SE SATISFEITA A CONDICAO_ 20 PRINT “APERTE UMA TECLA NUMERICA’ 301NPUT A 40 GOTO 10 50 PRINT “VOCE BATEU © NUME- ROCERTO" BLOCO DE REPETICAO INDEFI- NIDA TESTE NO FINAL 10 REM INICIO DO BLOCO. 20 PRINT “APERTE UMA TECLA NUMERICA” 30 INPUT A 40 IF A <> 5 THEN GOTO 10 REM REPETE SE CONDIGAO NAO VALIDA : 50 PRINT “VOCE BATEU A TECLA CERTA" Como se vé nos exemplos acima, cada bloco € uma unidade I6gica independente poderd ser usado em outros programas ‘com poucas ou nenhumas modificasGes. (Os exemplos dados podem servir de mo- delo para voo8 criar 0s seus proprios blo- ‘cos, modificando, apenas, as condigoes € as instrugdes abrangidas pelos mesmos, Finalmente, par aqueles que estio aachando que 0s comentiries 86 ocupam fespago e que as sub-rotinas tornam o programa lento, aconselhamos a fazer 0 programa do modo indicado e, apis estar pronto, remover os comentarios de uma ‘pia due serd usada para rodar ‘As sub-rotinas devem ser colocadas no inicio do programa, pois, quando o Basic pprocura um nimero de linha, comeca pela primeira linha do programa'e continua a pesquisa, uma a uma, até encontrd-la e, ‘assim, se a8 sub-rotinas estiverem no ing cio, serdo encontradas mais rapidamente. Vamos, agora, experimentar 0 10v0 tipo de programacio até a préxima cedigfo, onde teromes novas dicas de como aproveitar melhor as linguagens disponi- ‘Atéa proxima, CAPS LOCK Muitos programas em Basi, a0 solici- tarem do operador uma entrads, 6 reco- hecem o que foi digitado caso a tecla CAPS LOCK esteja pressionada, ou vi- Para contornarmos este problema, cevitar uma linha de programa maior do ‘que 0 necessério, podemos fazer uso de uma variével do sistema, a CPAST, que indica o estado da tecla CAPS LOCK. Caso CAPS LOCK esteja ativa, tere- mos em &HFCAB um valor maior que zero e menor que 255. Um valor igual a ‘zero desativa a tela, Exemplo: Poke &HFCAB, | (ativa) Poke &hFCAB,0 (desativa) MUOSICA ALEATORIA. Coma sers'a misica no ano 3000 © programa abaixo poderé dar-ihe uma dar-Ihe uma idéia. Verifique que hé um certo padric. A _geraclo dos nimeros aleat6rios que estio S00 a miisica ¢ feita pelo micro segundo ‘uma rigida regra matemética. programa Miisica Aleat6ria é parte integrante do livro 100 Dicas para MSX. da Editor Aleph. 048000", “S0NB000 ASTAS CIMT RRC IAE “+STASCINT(RNO(-TINEDNI SH 50 PLAY XS. Y8,28 ey DICAS 7 Slots e - expansoes Voe® jd deve ter se indagado a respeito do sistema de SLOTS de seu MSX: como Tuncionam os cartuchos de jogos, interta- ees, ou qualquer periférico conectado 30 seu. MSX via cartuchos. Neste artigo, procurarei esclarecer as dividas a respei to dos slots e piginas de meméria que sio lum pequeno enigma na vida de usuarios de mieros padrio MSX. microprocessador 780 é um proces: sor de 8 bits capaz de enderegar 65536 de ‘meméria (64 Kbytes). De que forma, fentio, podemos ter 32 Kbytes de mem6- ria ROM e mais 64 Kbytes de mem6ria RAM para uso no micro? Como podemos ter, no exterior, micros do padrao MSX ‘com expansées de meméria de 128 Kby- tes? O responsdvel por isso € um circuito integrado chamado PPI, do inglés Peri- pheral Programable Interface, Je identfi- cago $255. A descricio mais detalhada deste “chip”, termo que usarei daqui em dliante, ficard para uma outra ocasiao, pois, no momento, s6 nos interessa o tra batho que ele realiza no raicro, Este chip € uma interface paralela con- tendo 4 portas de 8 bits cada, Uma destas portas, a qual chamaremos de porta A, é responsivel pela Idgica de selecao de slots no MSX. Cada grupo de dois bits desta porta pode conter un mimero entre Oe 3, © qual vai indicar em que slot do MSX 44 pigina de meméria correspondente vai tslar iva, Para entender melhor, observe figura | ‘Como exemplo, se quisermos uma configuragéo semelhante a da figura 2, teremos 0 seguinte valor na porta A dt PPE: &600001010. Dividindo este niimero fem quatro bloces de 2 bits, teremos: ‘{b00, &bO0, &H10, AIO, Em decimal, teremos 0, 0, 2 2, que, na ordem da pri- meira pagina até & quarta, signifies que as primeiras esto ativas no slot O e as Uluas superiores no slot 2. Esta & uma das configuragées de meméria mais usada no 18 MSX € 0 seu micro pode, inclusive, ter esta configuragio. Agora, vejamos, cada pagina de mem@ria possui 16 Kbytes. Se temos 4 slots, cada um com capacidade de conter meméria em 4 péginas, podemos ter 4x4 16 paginas de 16 Kbytes, perfaze «do um total de 256 Kbytes de mem6ria. (Cada pégina também pode ter uma ex- ppansdo para mais 3 paginas iguais sobre Postas. Mas esta selogao no € mais to simples como a primeira. Portanto, 0 seu ‘micro poderia ter mais 3 blocos de meemé- ria de 256 Kbytes sobrepostos ao primei- 0, © que daria um total de 1 Mbyte de neméria. Otimo, no & mesmo? ‘A{, surge o problema de enderegamen to de 64 Kbytes, Apesar de toda esta ‘meméria, linearmente, $6 podemos ter 64 Koytes ativos, Provavelmente, voc deve estar odian do 0 Z80, mas nao fique chateado. Voce pode chavear péiginas de meméria m- Gando o valor da porta A da PPI, poden- do acessar todas as outras paginas quando guiser. Mas lembre-se: nunca mais de 64 ‘Kbytes simultaneamente ‘Quando o seu MSX & ligado, os slots silo pesquisados & procura de ‘meméria RAM, Este teste € feito das mais allas po- sigdes de meméria para baixo. A medida {que o sistema encontra RAM, vai habili {ando esta meméria para uso. Se houver ‘mais de duas paginas contendo meméria RAM. entre os enderecos &h8000 SHFFFF, cle habilitard as péginas mais préximas ao slot 0. O seu MSX fica, entio, com as piiginas zero € um no slot zero contendo todas as suas rotinas inter- nas de operagio eo interpretador BA SIC, que estdo em ROM, nestas péginas, ca meméria RAM livre nas piginas 2.€ 3 ‘em algum outro slot. A partir daf, ele exe ‘cua uma iniializago em variéveis de sis- tema e outras funcbes prioritérias para, ANDRE L. F. DE FREITAS depois, entrar no interpretador BASIC. Para saber qual a configuragio de meméria do seu MSX, entre com 0 pe~ {queno programa em BASIC da listagem © rode-o, Ele mostrard quais as pias ati- ‘yas do seu micro, pois a configuragio po~ de variar conforme 0 fabricante. O pro~ ‘grama fiz. uma leitura na porta &hAS do ‘micro, a qual enderega a porta A da PPI © valor correspondents lido ¢, entao, di Vidido em grupos de 2 bits e passado para decimal, informando eta que sot estio as piginas de meméria do micro. ‘Agora que jf sabemos como funciona a puginagio dé meméria dos microcmpu- tadores MSX, podemos conhecer um pouco mais do sistema de expansées. ‘Quem possui uma interface de disco, ‘cartio de 80 colunas, ou mesmo um car- tucho de jogos, jf verificou que 0 mesmo € conectado a uina das entradas de cartu- cho do micro, Cada entrada destas ccontém uni barramento © uma légica de selecio correspondente a um dos slots do MSX. Quando um destes slots eontém um penférico ou um cartucho de jogo, a Cializacdo do sistema procura um certo Conjunto de bytes na meméria correspon dents a estas entradas. Estes bytes comtém informagées Gteis do sistema para que es- te reconhega o tipo de periférico conecta do, Estas informagées podem indicar se existe ROM no slot, © seu enderego de cexecuclo, se existe expanso de coman- dos a serem_utilizados pela instrucio CALL do basic, enderego de rotinas para rmanipulagio de dispositives, ete ‘Como conclusdo desta parte do artigo, vemos que o sistema de slots do MSX é algo de grande valor, pois, através dele, ppovlemos manipular toda ‘a meméria e acessar um grande némero de periféricos jf existentes para a linha. Futuramente, fem uma outra oportunidade, iremos ex- plorar mais 0 acesso a periféricos. Trata- yremos, agora, somente da meméria de cpu ‘nosso microcomputador. ‘A. seguir, veremos um programa que permitiré a Vocés, usudrios, explorar toda ‘a mem@ria “adormecida” do MSX. ‘Vamos supor que temos um programa ‘em linguagem de mfquina que niio neces. sita do interpretador BASIC para ser executado. F 0 caso dos jogos em lingua- gem de maquina que voee, provayelmen- {e, possui. Vamos supor que © programa tem mais de 32 Kbytes de comprimento, (Ora, se 0 micro s6 tem atives 32 Kbytes de RAM, como poderemos carregar executar éste programa? Simples. © pro- grama é, geralmente, dividido em blacos ‘menores com 16 Kbytes cada. Ao se er 0 Drimeiro bioco com a instrugéo BLOAD, este bloco € carregado em uma pégina ativa do sistema e seu ponto de entrada & ‘uma pequena rotina que verifica se hd uma pégina de RAM correspondente a pégina do interpretador BASIC (pégina 1) em outro slot diferente do 0. Ao en- contré-lo, muda o valor da porta A da PPI para se configurar possuindo a pina Lem RAM. A seguir, o programa € rea- locado para esta pégina ¢ a porta A da PPI recebe, novamente, a configuragéo original do sistema, retornando o controle do micro ao imerpretador BASIC. Pron- to, Temos 16 Kbytes de RAM contendo ‘um programa em uma regido da meméria 20 REA SLOTS & FXPRASIES 30 REA AUTOR: ANDRE LUIZ FRELTAS 40 013 50 A= INP ( AHR ) 60 AS = QINS (A) 70 FOR 1=1 10 @ STEP 2 108 (88, 3- INT ( 100 PRINT “PRGIARE”; CMH + BS) 110 NeXT 1 SOT: “; AL ‘gue no estava sendo utilizada; uma da- uelas paginas que, a principio, parecia iio ter utlidade. Podemos fazer isto com vvirios blocos de 16 Kbytes de programa, desde que tenhamos paginas de meméria suficientes para conté-las. Outra limitag3o & a de nunca desati- vvarmos a pégina 0 da ROM, pois Id estio ‘contidas as rotinas bésicas de operacio do MSX. Se ativarmos a pigina 0-em outro slot, © programa If contide deve realizar algumas destas funcoes, sob pena de per- ‘dermos o controle do micro. O mesmo ¢ vido para a pina 3, pois lf se encon- twam variéveis do sistema muito impor- {antes para o perfeito funcionamento do ‘micro. Ao final do carregamento dos blo- 0s, © Gltime deve conter uma rotina que ‘manipule as péinas ocultas nos slots“ ios" do micro, ¢ teremos, entao, um belo jogo ou utilitério com mais de 32 Kbytes de comprimento. Para se rodar 0 progra- ‘ma, basta configurar a PPL para ativar ® pligina correspondente ao bloc que 4queremos executar e pular para um ende~ rego naquele bloco. Ao final de execugao, podemos alterar a configuragio nova. ‘mente e executar outro blaco, Pode ser lum pouco estranho ficar pulando de um lugar para outro, mas o resultado, quase sempre, é um timo jogo ou uliltétt, 0 {ual jd fez com que muitos de nés perdés- semos_algumas horas utilizando-o com grande prazer. © programa da listagem 2 € uma pe- quena rotina em Hinguagem de méquina Que procura uma pagina de RAM corres Pondente wos enderecos &h4000 até &h7EEF nos slots livres do seu MSX e rea- Joca para 14 um programa em assembler qualquer. Como exemplo de programa a ser realocado, temos 0 fornecido na lista- gem 3. Este programa somente imprime ‘uma mensagem no video sem a necessida- de do interpretador BASIC. Na listagem 4 tcmos uma outra pequena rotina que chamard © programa de impressio na pé- gina em que se encontrar ¢ retornard 20 interpretador BASIC, Observando a listagem 2, veremos que 4 rotina comeca tentando escrever um va- Jor na memériae, depois, tena ler de vol- ‘4 0 mesmo valor. Este teste tem de ser feito duas vezes com valores diferentes, pois este enderego poderia ser em ROM ¢ Eonter 0 valor testado, 0 que nio nos le- varia a nenhuma conclusio, Se for encon- trada RAM, o programa passa a realocar © programa da listagem 3, Portanto, antes de rodar o programa da listagem 2, certi- Fique-se de jd ter digitado, também, 0 da listagem 3. Sco slot testado mio puder ser usado, 0 programa continuaré a procurar até encontrar uma érea livre, 220 REM PRIMEIRA ROTINA ~ LISTAGEN 2 230 DATA DB, #8, 22,F0,£0,21,00,40 £240 DATR 04,03,08,8,C6, 04, 32,F1 250 OATR £0, 260 DATA 77, 320 DATR C0, R2, 40 ATA 45,58,50,41, 110 REN SLOTS F FXPRNSAES 2 120 REM AUTOR: ANDRE FREIT?S 130 REA 140 REM ESTE PROGRAMA BASIC COLOCR NA 150 REM HEKORIA AS ROTINAS EM LINGURGEH 160 EH DE AROUINA CONTIORS KAS LINAS 170 RE ORTA. 180 REN ESTAS ROTIARS CORRESPOROEH 190 REM AS LISTAGENS 2,3,4 DESTE ARTIGO 200 REX 710 REM 350 DATA 53, 07,00 360 REM TERCEIRA ROTIAA ~ LISTAGEH 4 370 OAIA 3A, FI ,£0,03,f8,C0,00,40 380 DATA 3A,FO,£0,03,8,9, 390 RE 400 FOR T=RHE000 TO BHEO34 410 RERO ASSR-VAL("AH"#AS):POKE 1,8 420 NOT 1 430 FOR 1=8H€100 TO aHEi22 440 READ ASR=VAL(“AH"#AS) :POKE 1, 450 REXT 1 460 FOR 1=8HE200 T0 4HE200 470 RERO ASeA-URL("AH"4RS)=POKE 1,8 480 NEXT T 490 CLSEPRINT®ROTINAS CARRESROAS NA HEA ania” 19 Vooé devers utilizar um monitor as- sembler para entrar os programas na ‘memOria, mas, caso no possua um, no se desespere, Na listagem $ eu forneco uum programa em BASIC que colocars na ‘meméria, automaticamente, os programas 2, 3.¢ 4 que estio em instrugdes DATA ‘as linhas iniciais do programa. Apds os trés programas estarem na ‘meméria, estamos prontos para rodé-los. Digite, no BASIC, as linhas abaixo: DEF USR = &HE000 A= USRO) Pronto. ‘Agora, 0 programa de impressio jé est em uma pagina de meméria live do seu MSX. Se voC® jf digitow a listagem 4, estamos prontos para testar a paginagéo MIDS(HS, I, 1) 250 PORE ANE DEF, asc(aS) 260 NEXT 1 270 POKE BHETFE+1,0 + REM TERKINA HEWSA GEM COM BYTE ZERO 700 REM CHAAR ROTINA EM ASSEWBLER 290 DEFUSR=RHE000 + A=USR(OD 300 PRINT:PRINT"MENSAGEM GRAVADR #4" 310 END As rotinas de cassete se dividem em dois tipos: gravagio e leitura. Observe a labela 1, Nela sio relacionadas estas roti- nas ¢ dados os enderegos de entrada cor- respondentes. Nio vou descrever estas rotinas, pois sfo, de certa forma, comple xas, envolvendo conhecimentos de lin- {guagem de maquina e do hardware do sis- tema. Nio pretendo, neste artigo, exigir de vocés, leitores, grande conbecimento dde assembler, mas uma pequena nogéo & muito dtl. Observe que ainda existe mais uma rotina que trata somente do estado de operacio do gravador casset. Entre com os seguintes POKES, pelo BASIC, para testar esta rotina POKE &HE000,H3E POKE &HEOOL.| POKE &HE002,&HCD POKE &HE003,2HF3 POKE &HE004.0 POKE &HEOOS &HIC9 Agora digit DEF USR = &HE000 A= USR (0) Reparou no “lick” do gravador sendo sacionado?” Experimente dar POKE HEOOL,O ea seguir, novamen A=USR(O). © gravador deve desligar agora. Estes POKES, acima, somente car regam, a parti do enderego &HE000, unt Dequero programa em linguagem de mé in LISTAGER 2 ‘quina que coloca no registrador A do Z80 tum valor e chamam a rotina de operacéo do motor do gravador. Isto equivale as instrugGes BASIC: MOTOR ON ¢ MO- TOR OFF. Nao € muito dificil controlar 0 sistema de gravago em assembler, mas deve ser tomado muito cuidado para nio se gravar ou ler informacées nao cocrentes. Uma simples questio de tempo, ou soja, demo- a na Jeitura de um byte na fita, pode tirar todo 0 sentido do que o computador est endo. As rotinas do BASIC estio eseri- tas de forma a no permitir que coisas do tipo acontecam, mas vocé também pode fazer 0 mesmo sem problemas, Como exemplo de utilizacio destas ro- tinas, dois pequenos programas so for- necidos nas listagens 1 ¢ 2. © primeiro les gravard uma mensagem na fita cas- sete © 0 segundo lerd esta mensagem de volta. Os programas so em BASIC, con- tendo rotinas em linguagem de méquina ‘em linhas DATA. AS rotinas em lingua- ‘gem de méguina estio descritas em as- sembler, respectivamente, nas listagens 3 4, para aqueles que querei se aprofun: dar mais no assunto. Agora, digit 0 pro- ‘grama da listagem 1, prepare o gravador para salvar a mensagem e€ rode © progr ima. Este programa pediré a vos pars en {rar uma mensagem, carregard esta men- sagem na meménia ¢, ao chamar a rotina fem linguagem de méquina, passaré a men: sagem para fita easset, Digite NEW e entre com © programa da listagem 2. Este programa faré 0 in- erso do anterior, Iendo a mensagem da fita através de uma rotina em assembler © a carregaré na meméria, O restante do programa BASIC se encarregaré de im- Primir a mensagem no video. Quando es- tier digtado, volte um pouco a fita cas- sete para o inicio do bloco que vooe sal~ ‘ou anteriormente e prepare~o para car- regar 0 bloco, Rode o programa e agua de a mensagem no video. Satiseito com 0 resultado? Esta foi a mensagem que vocé Aigitou no primeiro programa e, apesar de ter dado um NEW, afesté ela de wot, via eassete ‘Como conclusio, vemos quo todos os comandos de gravasio do BASIC utii- 7am estas rotinas de gravagio do BIOS, somente lembrando que estas sio bem simples, fazendo, somente, as operacies mais simp, enquanto que as rotinas Jo interpretador BASIC jf contém testes pa ra yooé poder dar um BREAK na gra- vagio, a selegGo dos dios que vlo ser salvos, a gravagto daquele pequeno bloco, © “header” de identficagio dos progra- ‘ase outrastarefas mais complexas. "Nada disto the impede de usé-as,co- 1mo foi apresentado neste artigo, pot to- das as coisas simples podem, ainda, ser bom trabalhadas ¢ muita coisa pode ser criada em cima destas rotinas. De onde voeés acham que veram os copiadores de programas que muitos usani? E aqucles Jguinhos que s6 se carregam com um Catregador especial onto neles mes- Para aqueles que vio se aventurar, Jeiam as listagens 3 4, tentando entender © que fax cada ura das rotinas e boa sorte nas suas enperiéncias. Em breve, volare ‘mos com novas exploragdes pelo mundo ddo BIOS, descobrindo 0 que esté por trés de outeasinstrugées do BASIC. 110 Reh 0) SISTENA OF GRRURCAD cASSETE v0 HSK 120 REA ANDRE LUIZ FARACD OE FREITAS 190 0A 2), ,00, 21,06, £2, 5,00 140 DATA €4,00,21,77, 28, FE, 00,20 150 DATA F5,C0,£7,00,09 140 REA CARREGA 0’ PROGRAMA ASSEMBLER HA HEMOR IA 170 FOR I-8HE100 TO SHE 14 180 RERD AS: A-VAL(*AATAB) 190 POKE 1, 200 NEXT I 240 CLS = KEY OFF 220 REN CARMA ROTINA EM ASSENBLER 230 DEFUSR=RHETOO + AUSR(O) 240 PRINT “RENSAGER (10 250 F=RHE20O 260 APFEK(E) 200 IF AO THEN GOTO 3108 280 PRINT CHRS(AD; 290 EH 00 GOTO 260 310 FH PRINT=PRINT ASSEL Assistneia Btrinica toa, Assisténcia Técnica Aulorzada DISMAG - TEXAS. REVENDA AUTORIZADA DE PEGAS E ACESSORIOS SHARP Asistencia para todas as mareas (e calculaoras eletronicas, video (games, maquinas ¢e escrever ‘letrmias, micros da inna Py ELL ita impressora Formulario Continua 1, 2.043 “Arquivo para Disettos Pastas para Listagone Etiquetas Adosivas Disketes 5.174" 00 8 Reebobinager em hyion «@ Potitiiono Pronta Envega ‘Quaiquer Quaroge Garant de Qualidade Jupcimento cee er Te Menus e tabelas na screen 2 ANDRE L. F. DE FREITAS A. maioria dos programas existentes, principalmente os aplicativos, wtilizamn al” ‘gum tipo de mend para que o ususrio pos- sa efetuar uma escolha entre as opgées disponfveis, tornando, assim, © programa mais flexivel, Existem vérias formas dee apresentar um meng, tabela ou gr4fico, sendo 0 mais bbem elaborado e de melhor resultado vi- sual aquele no qual 0 ment ou tabela, ou 0 {que desejamos apresentar, se encontra no interior de uma janela, a qual possui cor diferomte do restante da te, Iniimeras sio as possbilidades para as janelas e as instrugdes ulizadas para seu processamento, mesmo em Basic, sio oucas e de {cil compreenséo. ‘A principal instrugso que utlizaremos LINE com sua opedo BF. Sua fungio € tragar uma linha, no modo gréfico, com ‘base nas coordenadas fornccidas’ pelo usudrio. Se a opcio BF for fornecida, serd tragado um retingulo, sendo que as coordenadas fornecidas ‘correspondem 105 extremos da diagonal do retdngulo a ser desenhado. O retingulo também ser preenchido com a cor especificada. LINE $6 pode ser utilizado na tela de alta tesolueo, portanto, outra instrucio, a SCREEN 2, serd utilizada para colocar ‘© micro no modo de alta resolugéo. Digite © programa abaixo, rodando-o a seguir. 10 SCREEN 2:CLS 20 LINE (20,20)-(100,100), 15,BF $30 GOTO 30 Na tela foi desonbada uma janela que possui cor diferente da cor dé fundo da tela, ‘A linha 30 se faz necesséria para evitar ‘© retomo do micro ao modo de texto, ‘Temos agora, ao que parece, um pro- Dlema: 52 0 micro esti em modo grético, ‘como colocaremos texto ri tla? ‘Todas as telas do MSX podem ser tra balhadas como arquivos para escrita. Por tanto, poslemos utilizar @instrugio OPEN do Basic para ter aoesso descrita em uma pégina geifica. Esta instrugéo associa um nnimero, entre 0 e 15, a um arquivo, no ‘n0s80 caso a pigina grifica (GRP, sendo este nlimeroassociado 4 instrugio PRINT, a qual se encarregard de escrever na tela grfica. Para posicionarmos 0 texto, usamos a instrugéo PSET, jf que LOCATE nio servird por atuar’ somente nas telas de texto. PSET iré imprimir um ponto na te ne, apis esta instrucdo, a posicao de im- pressio corrente no video & a logo & se- lnuir 2s coordenadas de PSET, Se plotar ‘mos um ponto com a cor de fundo da ja- rela, este nfo seré visivel e ficaremos com as coordenadas de impressio de texto po- sicionadas no local que desejamos. Apts esta instruco, podemos usar 0 PRINT # para escrever no nosso “ar quivo", ou sej 0 video grafico, Infelua as linhas abaixo no programa anterior e rode-0, SCOLOR 1,44 15 OPEN “GRP:” FOR OUTPUT AS #1 25 PSET (30,30),15, 26 PRINT # 1, “TEXTO" Observe a presenca de texto dentro da jiaela. Note que com poucas linhas de programa poxemos criar uma janela © e5- Crever texto nela, mesmo em alta reso- lugao. (© programs fornecido na listagem 1 é tum exemplo de mend, onde so apresen: tadas varias opsdes, cabendo ao usuario a escolha de uma de Favendo uma leitura detalhada do pro- fama, vamos observar as coordenadas das instrugées LINE © PSET. Na lsta- _gem, estas coordenadas esto sob a forma {de um ndimero multiplicado por &. Foran apresentadas deste modo para faclitar a Sdéia da tela com grificos ¢ texto simulta rneamente. A tela grifica possui resolugéo ‘de 256x212 pontes, enquanto a de texto, no modo SCREEN i, possui resolucio de 32x24 caracteres. Now que 32x8=256 e 2ax8=192, Pense na tela grafica como Juma tela de texto de 32x24 caracteres, E, sempre que quiser converter as coorden das dos caracteres, multiplique-as por oi to, para utlizé-las nas instrugées gratis, Observe também a subrotina que cria as janelas. A rotina foi melhorada com 0 aceéscimo de instrugSes para eriar uma “‘mokdura” © um pequeno efeito de som- Dra nas janelas, Leia atentamente o programa e obser- ve © que pode ser feito com janelas, apro- veltando as idéins aqui apressentadas em ‘seus prOprios programas. Nos pr6ximos niimeros iremos publi- ‘car um programa em médulos que ofere- cera varios recursos como calculadora, ‘agenda telefénica, tracador de gréficos, ete. 25 5,44 180 X1=O211°72N2=242Y2=1 f Por Andre Freit 50508 9008 CC=1 240 AB=INKEYSE IF AS="* THEN 260 270 AURL(AS)=1F ACI OR AS THEN BECP:G ovo 260 280 0M A GOSUE 300,440,650 290 OTD 170 310 REM OPCRO 1 - TABELA 330-015 340 CF 12008 vB 770 350 ARELA «22SUR 900 340 Yaz V=9EH8 = OSUR 900 440 FOR I=1 TO 4000: HEXT 450 RETURK 470 REM OPCRO 2 ~ GRAFICO aC lsat ‘s0su8 900 ‘G0SuR 900 ‘505uB 900, Gosue 900 5818 900 620 XI=242Y1=102K2=271 70 630 FOR I=1 10 4000: NEXT 1 640 RETURN 660 REK OCR 3 ~ JRELAS 480 015 790. XV=118Y1=18:X2=26272=223C.0 7260508 ™ 240 X21 70 750 FOR 1=1 TO 4000: NEXT 1 760 RETURN 770 REM SUBROTINA QUE CRIA JANELAS 790 /REK PARRHETROS: 800 REK XI, ~ COORD. INICIALS 810 REH x2, Y2 ~ COORD. FINALS 820 REMC) COR DR GRAELA 830 REX CM ~ COR OR MOLDURA 850 LINE (X088, Y188)~(K28B,Y248),C,F 840 LINE (X88, Y148)=(X248, Y24B) 0H, 8 870 LINE (X1a843, Yi¥8-3)-(Ke¥B43, 188), oH BF 80 LINE (X2xB, Y188)~(X26843, Y288-3) CN (BF 890 RETURN ‘720 REM SUBROTINA QUE ESCREVE 930-REM WA PRBIAA OE ALTA RESOLUCRD 950 REM PARAMETROS: 960 REX XY ~ COORD, RENSABEH 970 REX CJ) COR DE FUADO 980 REK —CE_—- COR CARACTERES 990 REM HS — HENSAGEH 010 OPEN FOR OUTPUT AS 1 1020 PSET (X88, ¥88),C 1030 COLOR 1040 PRINT Hh, HS 1050 CLOSE a 1060 RETURN CPU —— JOGOS & HIGH SCORES Nesta seco, publicarems 0s high scores de jogos e dicas de como melhorar 0 seu desempenho e ajudé-lo a salvar todas as princesas, planetas e demais seres que vi- ‘vem em perigo, implorando nossa ajuda, HIGH ScoRES ALIEN 8 49% BOULDER DASH 55.848 BUCK ROGERS 310.900, CHORO Q 42380 CIRCUS CHARLIE 1.198.400 ELIDON 94% FLIGHT DECK 6.410 GALAGA 850,000 INTERNATIONAL KARATE_ 999.999 KING'S VALLEY ‘5.642.600 KNIGHT MARE, 238.020 LAZY JONES 149.650 OH SHIT. 76.250 POLAR STAR 289.500 PYRAMIDE WARP 820.758 RIVER RAID, 73.450 ROAD FIGHTER 998.675 ROLERBALL, 3.120.180 SCION 501.100, SOCCER 40-0 SUPER COBRA 6.348.460 SWEET ACORN 9.990 TIME BANDITS 176.050 Se voc jf obteve um high score mais ‘ato dos aqui apresentados, ou em qual- ‘quer outro jogo, envie-nos sua pontuagéo acompanhada de alguma comprovacio, ‘como fotografia da tela ou desericéo das fases percorridas, para que possamos pu- bilicé-Ia, juntamente com 0 seu nome. Se vocé ¢ fera, nada mais justo do que © seu nome constar.na secdo de High Seores de CPU. Os jogos que oferecem facilidades adi- cionais, com tiro mltiplo, vidas infinitas, etc., 6 serdo considerados na sua versio original 0 en 1 REM REVISTA CPU ~ HAI0 1968 2 REM AUF HONTY REA LEITOR PARR AIL YIDRS 10 CLS:KEYOFFCOLOR10, i, 13SCREEN2 20 OPEN"GRP"FOROUTPUTASHI 1(29414K, 106), POINTSTEP (0,0) PRINTED, #CHRS(34) “AUF UTEDERSEHEN ONTY™ cH (34) sNEXT 40 colon =PRINTI, 41 COLORI FORE 1TO2sPSET(50#14E, 160) P OIWTSTEP(O, 0) :PRINTHI,"2 -) IORS INFIN TRS." 2HEXTE 42 COLORT|sFORU=TTO2¢PSET(50+1¥U, 180), OINTSTEP(O,09:RINTHI,"3 -) NORMAL. "BRE xTUECLOSEHT 50 AS=INPUTSCT) 60 F HENIOO THEN 30 90 GaTD 50 100 BLORD"AONTY”,RBLORD”AOATY2" PO"HONTYS" 110 BLORO"HONTY4", 2:8. 0RD"HONTYS™, | 120 BLORO"HONTY6":DEFUSR=RHB7002°OKERHA 60, 240:PORERH9G08, O:PONERHATO, 240: Sti0) 130 BLOAD"HOWTYT ReBLOAD"AONTY2",R=BLO O"WONTY3"REELORD"HONTY4",B 140 BLORO"AONTYS*,RZBLORD"AONTY6" :DEFUS = AH9700=POKEAHRA70, 240¢R=USRCT) 150 ALORD" MONTY” RSBLORD"HONTY2", LO ‘AO"HONTY3",RBLORD"AONTY4™ 140 BLORO°HONTYS”,ReBLORD"ACATY",@ 27 0 REM 1 REA ZANE 2 REM LEITOR PHER VIDAS IAFIAITAS 19 CLSEKEVOFFCOLORIO, 1 13 20 OPEW'GRP:"FOROUTPUTASHT 30 FORK=1102¢PSET(S0+1 4X, 106) POINTSTEP (20,5) PRINT, #HRS(34)"7ANC+CHRS(S 4) NEXTE 41 COLOR zFORU=1TO2sPSET(SO¥IHY, 160), COINTSTEP(O,0):RINTHI, "1 ~) VIORS INFN 17A8," NEXT 42 OLORY| SFORU=1T02s?SET(SO¥14U, 180)? COLNTSTERO,0):2RINT#I,"2 -) NORDAL." BNE aTueCLOsetl 50 AS=INPUTS(1) 0 Re 7 REA ALARA 2 AEM LETTOR PARA ATL VIORS 10 CLSHKEYOFF#COLORTO, 1,1 SS0REEH2 20 OREN 30 FO (200, 34) HEXTX 41 COLOR OIWTSTEP(O,0):PRINTA', TAS." sNEXTY 42. COLORI/ 3FORU=11023PSET(50¥iU, 180)? COINTSTER(O,0):PRIMTHI,”2 -) NORMAL.”:RE xTUscLoseny 50 AS-INPUTS(1) (0 TF RS="1"THEKIOO 70 IF AS="2"THENISO 90 OTD 50 100 sL0RD°cAS: 110 BLORDCRS 120 POKE 4H9152,0 130 DEFUSR=PEEK(BHFCCO) 42544 PEEK BAFLBF } 140 ReUSR(OD 150 BLOAD"CASS" ,ReBLORD"CRS: ‘OROUTPUTASH T02sPSET(S0H4X, 104) POINTSTEP NTH, #CHRS(34) "GALAGA #CHRS( ORV=1TO2EPSET(SOHN, 140), P =) VIORS INF 0 Re 1-REA PROFANGT 108 2 REM LELTOR PARA AIL VIDAS 10 CLS:KEYOFF =COLORIO, 1, 1 :S0REEK2 20 OPEN" SRP="FORDUTPUTASEI ET(5047 4K, 106) POINTSTEP NTH, #CHRS(34) "PROFRNRT ON" + (200, HRS (34) NEXT 4) COLORT1FORV=17025PSET( 5041, 160), ? OOINTSTEPCO,0)PRINT¥1,“Y =) VIORS INFIN 42 COLOR] 1:FORU=1T02"PSET DINTSTEP(O, 0 sxTuscoseey 50 AS=INPUTS(I) 60. 1F a=") "THENIOD 70 1F RS="2°THENISO 70 G00 50 100 RLORD"CAS”, 228.080" CRS: ASS" :POKEAHCOGA, 240, 0 REN 1 REH BOUHDER 2 REM LENTOR PARA AIL VIORS 10 CLS:KEYOFE:COLORIO, i, 1 :S0REENE 20 OPEW"GRP="FOROUTPUTRSEY (5081 4X, 106),POINTSTEP (200,5) PRINT), #HRS(34)"@OUNDER” CHES (3e:Nexx 41 COLORTIzFORU=1TOZsPSET(5O+14V,160),? ‘DINTSTEP(O,0):PRIKTAI,"1 -) VIORS TNFLAN TRS." :NEXTV 42 COLORYI zFORUITO2s?SET(50¥i+U, 180), ‘OINTSTE®(O,0):PRINTAI,"2 -) MOREL xTu:cuoseei 50 AS=INPUTS(1) 70: IF AB="2"THENIIO 70 GOTO 50 100 BLORO"CAS: 7, 200:0EFUs Wo BLORO"CAS: ASS” REBLORD"C CURSO DE MUSICA — Volume 1 Editora Aleph - 144 Paginas - 14x21 em Barbieri, Piazzi Nao tem sentido tentar se aprender teoria musical sem se tocar um instru- ‘mento. A maioria das pessoas, porém, por rio disporem de tempo e paciéncia sufi cientes para adquirir ume razodvel habili- dade num instrumento qualquer, margina lizam-se do maravilhoso mundo da misi cca. Neste caso limitam-se, se muito, 20 papel de passives ouvintes. Com 0 advento do MSX, porém, este ‘ouvintes passivos passam a dispor de um eficiemtssimo instrumento musical de 3 vores que vai lhes permitir aprender mi sca interagindo (com um. instrumento ‘musical tradicional) sem que haja necessi- dade de um adestramento psicomotor. © objetivo principal dest livro no & 0 ensino de programacdo, apesar disso aca bar ocorrendo de forma suave e diditica, mas sim 0 aprendizado, por parte do lei tor, da teoria musical em si, transforman: {do-0 num ouvinte ative e em certos casos, até num compositor de talento! TECNICAS E-TRUQUES DE PROGRAMACAO Editora Aleph ~ 191 Paginas ~ 14x21 em Renato da Silva Oliveira Visando facilitar a programagio em Basic, poupando tempo ¢ esforgo, 0 livro presenta listagens de programas que po \dordo ser utilizadas pelo programador ety sub-rotinas Dividido em 7 capitulos (teclado, vi ‘deo, som, cassete, impressora, drive © processamento), torna-se indispensdvel sa quem eseja aproveitar todos os re isos disponiveis do MSX, explorando ‘assuntos que no se encontram nos ma- ‘nuais que acompanham 0 equipamento, LIVROS DRIVES LEOPARD DE 3.1/2” NOVOS HORIZONTES PARA O SEU MSX tora Aleph — 120 Paginas 13x18 em Carvalho Jr., Oliveira, Pjazzi Destinadlo aos usuétios de drives de 3 1/2”, ou de qualquer drive de 51/4", ou posstidores de acionador Leopard modelo DT 300 ou DT 350, da Technoahead, 0 livro formece, de maneira objetiva e clara, informagées “necessirias para operacio ‘com 0 sistema operacional MSXDOS ¢ Disk Basic ‘Todas as instrugdes do MSXDOS e do Disk Basic sZ0 comentadas, sendo forne- ‘cidos exemplos e comentados 0s poss ‘casos de erro que poderdo ovorrer. ‘Uma grande énfase € dada & progr magdo com os comandos especiticos do Disk Basic, e Jo MSXDOS, dando total suporte ao programador. Solicite os programas constantes desta revista Qravados em disco de 5 1/4", tempo com a digitacao. Para receber o disco em sua residentia, nao perdendo envie um cheque no valor de Cz$ 1.000,00, nominal a Aguia Informatica. 29 Jawbrake CESAR MATTOS Este jogo foi baseado no velho Pac Man. Para fazer pontos, vooé deverd comer todas as vitaminas espalhadas pela tela, tomando cuidado com os guardies que tentam impedir, a todo 0 custo, o seu ob- jetivo. Preste atengio na parte central da tela f tente apanhar as super vitaminas que de ‘vex em quando aparece. Para jogar, use as setas. 486 (VAL(AB"*RUGHTS(OS, 899) 50 NEXTAESPRITES(O}-R808 100 “RPRESENTACAD 170 60sU81480 120 SOREEN2 130 PRESET(¢,76)2COLORI2¢PaINT#? "ARCA TR SOFT" 2PRESET(94, 90)=COLOR7: PRINTS, ‘apresenta™ 135 PRESE1(85,77):COLORT2¢PRINTAN , "RRC DIR SOFT":PREBET(97, 91) 200L087: ‘apresenta 138 LENE(7B,70)~(085,70)3 185,105 21.178, 70)"(78, 105) LINE C185, 70)=(185, 105) YOR LIRECB, NE(7B, 106)~( 185, 106). 142(79,71 SLINE(IB6, 713(186, 108) 140 FORU=1T02sF0RKI=40TO}e0=PUTSPRITEA, (11,50) 2NEXT 150 FORX=70TD10S=PUTSPRITE4,(180,X), 12, NEXT 160 FORX1=1SOTOROSTEP-1sPUTSPRITES, (1, 140), 12, 03NEXTXI 170 FORK=10STOOSTER-1sPUTSPRITEA, (45, ),12,03HENTX 180 NEXTY 190 PUTSPRITES, (~30,255) 12, 2TFPLAY(O) THENBOTO9O 200 SCREENS#COLOR, 1305 210 LINE(IS,0)-(235, 20) D1)813 SOUNDD,KESENEXTI ‘260 PUTSPRITES,(4#14Y1, 100) f,0 270 WERTAEARNO(1 181382 280 Y=11414193FORX=1OTOISTEP-1 290 POET (6#Y, 70), :COLORRGPRINT 1 ,MIDS("aubreake",X,1) 300 PUTSPRITEA, (FY, 100),A,0 2310 FORK=20TOTSTEP=4:S0UN00, 45=HEXTA= om 4320 oasrer660suB1470 230 NEXTEB 340 GOSuPI4g0cui0T#a0=S0REEMN zCOLORI7, 25LODATE4, S#PRINTSTRINGS 22, 229) sLOCATE. G,6:PRINT'S AW GRE RK E RSLOCRTEA, TEPRINTSTRINGS (22, 220) PUTSPRITES, (122, 80), 13,0 350 PUTSPRITEA, (122,80), 6,0 HO LODATE),22:PRINT'Pres.arra ce esp 1135070200 370 "CENRRIO 380 COLORS, i:SCREEN2:S°RITEONESTRIG(O) OFF 390 COLA KER" =COLOR] {NBS CH CHRS( 249) {COLOR 4PRESET(60, 17 5):PRINTH, "ARCADIA SOFT 1986"2COL0RIS ‘395 COLOR7=PRESET(4,1):PRINTAT ,"JAVBRE KER" COLOR] 2:PRESET(150,!):PRINTH, STR TNGS(CH, CHRS(249)) sCOLORT4=PRESET (60, 17 ):PRENTHI, "ARCADIA SOFT 186" =COLORTS 400 FORX=1TORELINE(90-X, 12-X)~(20-K, 17 2-X), 12, BENET 4410 LINE(50,30)-(200,30),4 420 L1NE(50,50)-(200, 50), 4 430 LINE(50,70)~(200, 20), 42L1NE(50,90)- (200, 90) ,ASLNE(SO, 110)-(200, 110), 42L1N -SET(49, 1)2PRINTW"JRUBRE £(50,130)~i200, 1501 ARNEL, 1503- 1500, 4 440 “GaxeiaroisosrerZ0 NTH, STRUVGS(19,CHRECIPS: 445 ONINTERURL=1500B0808 450 450 “COMRNDD DD G60 50 NTERURL ON OCT 480 FORX=0TOzORSTEPEHN THENGDSUBBAO 500 Fu ATHENEOSUBESO 510 (EuDBTHEW aSUBR6O 5120 TFVDSTHEM.05UE670 50 iFuC1OTHEN@OSUBAGO 540 TFVCaTHewsISUR8RO 550 1FV)STHENSTSUBIOG 50 1FVsiHeNaOSLRFIO 520 GOSUR720:NEXTX 580 FORX=30T0209STE?s: 590 TFU<6TRENSUSUEBED 600, iFuc4THENGDSURASO 810 [FWD8 THEM GOBUB 360 4620 LFV)STHENGOSUBEO 430 IFUCLOTHENGSIBBB0 640 iF U¢BTHENGOSUBBIO 490. TEASTHENGISUBIOO 60 TEVCSTAENSISLADI 470 G05ue720 686 NEKTK 490 ASRNDAT NA ‘700 FORX=2T010:PUTSPRITEX, (-2 NEKTAS FRI TAERGOTOSSS 710 6OTOSE0 720 "NOV. J 73D IWTERUALONER=STIG8¢0)8 EAN= 760 Fk UN? A 4-4) 4BNDAD THEN 29 720 IFRSRNOPDIANT (W+7 46) 4RADPIAT He) 6} CO4BNOAC” SOTHER=H ZO 780 PUTSPRITE\, (43,9, 9 4aOPOTAT CN 790 IF THENPLAY VIG LseAscon +7 003608u8) 460 800 LFPOINT(N+3 ts) =150RPOLATO3, HeB) RPRESET(, AF Lavi HPTPSES) TENGOSUE LORI =P8 LATA ,CoRB2) S0ni 0000408" =Ti=TT+1 1480260808050 810 1F7T)=S50Q0THENTT: ¥25504.801 491. 861 80.40 PRESET (49, 1) PRINTHT 12sPRESET(50, 1) PRINT $(2499} 00.0815 820 RETURN 890 “THPRESS.008 TAIMIG0S STRINGS (CA, CHR ‘840 PUTSPRITES, (X2, 30), 10, 0222708 850 PUTSPRITEA, (41,10), 12, 860 PUTSPRITES, (17,90), 13, 870 PUTSPRITES, (X2, 70), 8, ‘830 PUTSPRITE?, (X1, 90,2, 890 PUTSPRITES, (12, 1103,7, 900 PUTSPRITES, (x1, 190),9, OFRETURN FO PUTSPRIE:<, (X2, 150), 14, OBRETURK 920 LFPLAY(O}T=N¥20 930 SOUND?, 56:SPRITEDFF=SOUNDE, 90 Ceci ie FCOTAENGOTERGO 950 ONOR PRESET (49,1 )=PRIATS iNas(Ca, 980 FuRS=sTO)| 2 HEXTSESPR TEA: 970° ROT.FUNRLIZRCRG 1262499) 300.0875 1000 PRESET (82, 78) SCOLORI PRINT, STAIN 512, CHR (2799 0083 zPRESET(B0, $6) 3? {INTHE STRINGBC2,CaRS(219) EPRESET Bs, ‘78):COLORiO=PRINTRI ,"FEN OE JOO”:PRESE 1480, 100) :PRINTH) USING "RAAT PT, 29RIAT ,”Fonr0s" Yolo PLavevistieusceueaaareocecce”,"¥ ‘-)404CCbeFORBOSCDCCC", "V1 403. 400440" 3€20 FORY=iT010:PUTSPRITEY, (0,0),1, 02K ORY=!TOTOUOSNENTYCLSE V030 EFPLAY(O)THE1030 040 RUN 1050 "Mo, #515 160. INTERURLOF: UISPRLTEY,(-20,255),9,12NEXTY 070 PRESETO74, 77)

Você também pode gostar