- futurista
- postou em Qua, 04 Out 2006, 21:51
- Usuário Nível 3 | Mensagens: 134
Cara, leia tudo até o final e vai saber o q fazer:
Funçoes ASC
Nota:
Embora este documento só menciona a SX, ASC \ -> e ASC \ -> funcionam
tanto para a SX como para a GX.
Por Bill Wickes
Codificação em ASCII de objetos da HP48 SX
Enviar um objeto da HP48 SX por e-mail pode ser difícil se o objeto não
estiver em formato ASCII, como é o caso dos objetos de bibliotecas (Libs).
Há muitos codificadores disponíveis em diversos sistemas operacionais
entretanto isso exige que quem envia e quem recebe a mensagem tenham
computadores compatíveis ou pelo menos mecanismos para codificação e
decodificação. Os programas listados abaixo executam a codificação e
decodificação na HP48 SX , por isso, tem como vantagem o fato de serem
completamente independente de qualquer computador.
Os programas são chamados \->ASC e ASC\->. O anterior pega um objeto
da pilha e o converte em uma string no qual cada nibble (conjunto de 4 bits)
do objeto e sua checksum (checagem de soma) são convertidas em um caracter
de 0 a 9 ou A-F.( o objeto deve estar na RAM, caso contrário, haverá um erro
de objeto de RAM). Para facilitar a inclusão fácil em mensagens de email, a
string é separada por quebras de linha a cada 64 caracteres.
ASC\-> é o comando oposto do \->ASC: ele pega uma string criada pelo
\->ASC e a converte em um objeto. Quando você transmitir uma string codificada
tome cuidado para não trocar as strings; O comando ASC\-> usa a checksum
(checagem da soma)codificada na string para verificar se a decodificação
esta correta. Aparecerá a mensagem "Invalid String", acusando erro,
se o objeto não for o objeto originalmente codificado com o comando \->ASC.
Quando você transferir uma string para seu computador, use a conversão
modo 3 da HP48, assim a HP48 converterá CR/LF novamente em LF quando a string
for transferida de volta.
Duas versões do ASC\-> são aqui apresentadas. A primeira (P1) é em linguagem
do usuário da HP48, usando SYSEVAL para executar objetos do sistema.
P2 é uma string cujo programa de configuração (setup) usa P1 para decodificar
em um programa executável ASC\ ->.Então P1 é descartado.
A Segunda versão é mais compacta que a primeira e não pode ser
editada e por isso é mais segura (mas não pode ser transmitida em forma
de ASCII, o que ajuda a praticar este exercício).
Eis os programas, contidos em um diretório:
%%HP: T(3)A(D)F(.);
DIR
P1 @ ASC\-> Versão 1.
\<<
IF DUP TYPE 2 \=/
THEN "Not A String" DOERR
END RCWS \-> ws
\<< 16 STWS
#0 NEWOB SWAP DUP SIZE
IF DUP 4 <
THEN DROP SWAP DROP "Invalid String" DOERR
END
DUP 65 / IP - 4 - # 18CEAh SYSEVAL
"" OVER # 61C1Ch SYSEVAL
SWAP # 6641F8000AF02DCCh
# 130480679BF8CC0h # 518Ah SYSEVAL
# 19610313418D7EA4h # 518Ah SYSEVAL
# 7134147114103123h # 518Ah SYSEVAL
# 5F6A971131607414h # 518Ah SYSEVAL
# 12EA1717EA3F130Ch # 518Ah SYSEVAL
# 280826B3012808F4h # 518Ah SYSEVAL
# 6B7028080BEE9091h # 518Ah SYSEVAL
# BE5DC1710610C512h # 518Ah SYSEVAL
# 705D00003431A078h # 518Ah SYSEVAL
# 3D8FA26058961431h # 518Ah SYSEVAL
# 312B0514h # 518Ah SYSEVAL
# 18F23h SYSEVAL
DUP BYTES DROP 4 ROLL
IF ==
THEN SWAP DROP
ELSE DROP "Invalid String" DOERR
END ws STWS
\>>
\>>
P2 @ ASC\-> Versão 2. Para ser convertida por ASC\-> na versão 1.
"D9D20D29512BF81D0040D9D20E4A209000000007566074726636508813011920
140007FE30B9F060ED3071040CA1304EC3039916D9D2085230B9F06C2A201200
094E66716C696460235472796E676933A1B21300ED30FD5502C230C1C1632230
CCD20FA0008F14660CC8FB97608403104AE7D814313016913213014117414317
414706131179A6F5C031F3AE7171AE214F8082103B6280821909EEB0808207B6
215C0160171CD5EB870A13430000D50713416985062AF8D341508813044950B9
F06BBF06EFC36B9F0644230C2A201200094E66716C696460235472796E676933
A1B2130B21300373"
P3 @\->ASC. Para ser convertida por ASC\->.
"D9D20D2951881304495032230FD5502C230A752688130ADB467FE30322306AC3
0CB916E0E30CBD30F6E30C1C1632230CCD20DC0008F14660CC8FB97608403104
AE7D8143130169174147061741431311534AC6B4415141534946908D9B026155
4A6F53131F3AE731A014C161AE215F08082103A6280821939EEC08082170A621
4C161170CD56B870A18503430000D5071351796A9F8D2D02639916D9D2085230
C2A209100025F4D402F426A6563647933A1B2130A2116B213033C0"
SETUP @configuração automatica
\<< P2 P1 'ASC\->' STO
P3 ASC\-> '\->ASC' STO
{ P1 P2 P3 SETUP } PURGE
\>>
END
Instruções de instalação:
1. Edite o texto acima. Ele esta entre (start) e (end) em um arquivo de texto
com o nome CONV (por exemplo). Certifique-se que as strings e caracteres
estão exatamente iguais aos ai descritos, sem espaços em branco a mais ou
a menos nos inícios e nos finais de linhas.
2. defina o modo de transferência da HP48 SX para ASCII.
3. Use o Kermit, transfira o arquivo de texto CONV para a 48.
Verifique a checagem da soma - checksum (6C8Ah).
4. Execute CONV para faze-lo diretório atual.
5. Execute SETUP.
6. O diretório CONV deve então conter os arquivos ASC\-> e \->ASC
prontos para uso
Para rearquivar as versões decodificadas do ASC\-> e do \->ASC em seu
computador, definia o modo de transferencia de sua HP48 SX para binário.
Declarações:
o Use os programas correndo o seu próprio risco.
Uma vez no mundo SYSEVAL, sempre ha perigos e riscos.
Faça uma cópia da memória de sua HP48 antes de testar estes programas!
Antes de executar ASC \ -> verifique a checksum (checagem da soma) dos
objetos descritos acima para ter certeza que eles foram transferidos
corretamente
_________________
Criciúma/SC.