home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1997 September
/
Simtel-MSDOS-Sep1997-CD1.iso
/
disc1
/
00_start
/
xxdecode.txt
< prev
next >
Wrap
Internet Message Format
|
1989-11-27
|
18KB
From <@IBM1.CC.Lehigh.Edu:LJM3@LEHIGH.BITNET> Mon Oct 30 16:25:13 1989
Received: from IBM1.CC.Lehigh.Edu by wubios.WUstl.EDU (4.0/Sun UNIX 4.0); Mon, 30 Oct 89 16:25:00 CST
Received: from LEHIGH.BITNET by IBM1.CC.Lehigh.Edu (IBM VM SMTP R1.2.1MX) with BSMTP id 3689; Mon, 30 Oct 89 17:24:51 EST
Received: by LEHIGH (Mailer X1.25) id 2677; Mon, 30 Oct 89 17:24:30 EST
Date: MON OCT 30, 1989 17.15.31 EST
From: "Al McLennan" <LJM3%LEHIGH.BITNET@IBM1.CC.Lehigh.Edu>
Subject: New en/decoder
To: "David J. Camp" <DAVID@WUBIOS>
Status: OR
This past summer I got involved with XFER-L, which was put together to
tackle the transfer problems PHYS-L was having. (Both lists at
UCF1VM.) The result was an encode/decoder combination (lcoder.exe)
which can do either XXE or HEX alphabets. It is set up so on decoding
any characters extraneous to the encoding alphabet are stripped out;
this makes it immune to a chronic problem with our MUSIC system, which
can't handle wrong-format transmission.
I'm sending a file below which can be used to construct it, and would
very much appreciate any comments from you. It was written in
assembler, and I'll send source if you're interested.
Regards, Al
********File follows********
STARTUP.KIT, by Al McLennan, LJM3@LEHIGH.bitnet
The purpose of this file is to construct the program LCODER.EXE, which
is a PC-based encoder/decoder for file transfers.
This file contains three parts which are separated by cut lines
(=========). The first part is these instructions. With your word
processor, you should separate out the second and third parts into two
files. (Note the warning below regarding some word processors.)
The second part is assembly code for a very short decoder. This part
should be put into a file called SHORT.SRC
Finally there is the desired program in hex-coded form, which MUST be
filed as LCODER.HEX.
After you have both files SHORT.SRC and LCODER.HEX you can assemble
your short decoder using DEBUG (which comes with DOS). To do this, at
the DOS prompt enter
debug < short.src
You then sit back and watch debug assemble the code, which takes (on
my old XT) about 20 seconds. The program short.com should emerge.
You only use this once, to decode LCODER.HEX into LCODER.EXE, by
typing SHORT at the DOS prompt. SHORT.COM has no other use, and so
can be deleted once you have obtained LCODER.EXE. Be sure to make the
file LCODER.HEX before you run SHORT, as SHORT.COM will have nothing
to do if it can't find LCODER.HEX in the current directory.
This procedure may seem convoluted, but is one solution to the problem
that you can't get a decoder because of the reason you want it.
You have no doubt obtained this file by transfer over bitnet, and so
it may be mangled. However this is a straight text file, and any
mangling may be evident on inspection. If it doesn't work and doesn't
look right, perhaps you can fix it up. One of the main points is that
between the first line of code for short.com ("a 100") and the 150-
something'th line ("ret") there should be no blank lines, then there
should be one blank line, and finally 11 consecutive lines with no
blanks. The last two of these lines should be "w" and "q". (Extra
spaces anywhere don't hurt. The blank line, for example, can contain
spaces.)
It is possible that your word processor may introduce extraneous
control and extended-ASCII characters. This will cause DEBUG to
display an error message and the resulting SHORT.COM will probably
hang-up your PC. If your word processor is of this kind, it should
have both a "document" and a "non-document" mode. The file SHORT.SRC
should be written as a non-document file to avoid the problem.
LCODER.HEX can be written in either mode, as the extraneous characters
should not affect the decoding process.
After you have obtained LCODER.EXE, it can be used to encode files, or
to decode files which were encoded by itself. Encoding can be done
with the XXE alphabet, which was developed by Phil Howard, adapted to
MS-DOS by David Camp, and revised for Turbo-C by Karl-l. Noell. There
is also the option of using the HEX alphabet, consisting of the
characters 0-9, A-F. HEX files are somewhat longer, but may be more
immune to transfer problems. On encoding, LCODER gives the output file
an extension of XFR or HEX depending on which alphabet is used. The
output file contains a two-line HEX-encoded header (following the
"begin") which has directory information on the encoded file, a
checksum for the header, and a two-byte CRC for the encoded data. On
decoding, any characters extraneous to the encoding alphabet are
stripped out, and information in the header is used to help insure
faithful reproduction of the original file. Unfortunately, the
decoding method and header also make LCODER incompatible with other
encode/decoders.
================ cut here for short.src ========================
a 100
push cs
pop es
cld
mov bx,00c8
mov ah,4a
int 21
mov sp,0c80
mov ah,48
mov bx,0300
int 21
mov [024a],ax
mov ah,48
mov bx,0150
int 21
mov bp,ax
call 0153
call 01d4
call 0176
call 01f5
call 0134
mov ax,4c00
int 21
mov dx,023f
mov ah,3c
xor cx,cx
int 21
jb 012f
mov bx,ax
mov cx,[024e]
mov ds,bp
xor dx,dx
mov ax,4000
int 21
mov ah,3e
int 21
ret
mov dx,0234
mov ax,3d00
int 21
jb 012f
mov bx,ax
push ds
mov cx,2ee0
xor dx,dx
mov ax,[024a]
mov ds,ax
mov ax,3f00
int 21
pop ds
jb 012f
mov [024c],ax
ret
xor bx,bx
mov cx,[024c]
mov ax,[024a]
mov es,ax
mov di,bx
mov si,0252
mov al,[si]
repnz
scasb
jcxz 012f
mov bx,di
es:
mov al,[di]
inc di
dec cx
jcxz 012f
call 01c0
jb 018c
inc si
cmp al,[si]
jnz 0181
cmp si,025b
jb 018c
mov ax,di
add ax,[0250]
mov si,ax
xor di,di
mov cx,[024c]
sub cx,si
mov [024c],cx
push ds
push es
pop ds
repz
movsb
pop ds
ret
cmp al,30
jb 01d2
cmp al,39
jbe 01d0
cmp al,41
jb 01d2
cmp al,46
ja 01d2
clc
ret
stc
ret
push ds
mov ax,[024a]
mov es,ax
xor si,si
mov di,si
mov cx,[024c]
jcxz 01ef
push es
pop ds
lodsb
call 01c0
jb 01ed
stosb
loop 01e6
pop ds
mov [024c],di
ret
push dx
push ds
xor dx,dx
mov cx,[024c]
shr cx,1
mov es,bp
mov ax,[024a]
mov ds,ax
xor si,si
xor di,di
call 0216
loop 020a
pop ds
pop dx
mov [024e],di
ret
push cx
lodsw
cmp al,39
jbe 021e
sub al,07
sub al,30
mov cl,04
shl al,cl
cmp ah,39
jbe 022c
sub ah,07
sub ah,30
add al,ah
stosb
pop cx
ret
e 234
6C 63 6F 64 65 72 2E 68 65 78 00 6C
e 240
63 6F 64 65 72 2E 65 78 65 00 00 00 00 00 00 00
e 250
6E 00 36 32 36 35 36 37 36 39 36 45 00 00 00 00
n short.com
rcx
15c
w
q
===================== end of short.src ====================
Now pick out the remaining material and file it as lcoder.hex.
===================== start of lcoder.hex =================
Lehigh coder. Version 0.6.
Comments to Al McLennan, LJM3@LEHIGH.bitnet.
Directory entry for encoded file:
LCODER.EXE 5264 20 OCT 89 08:56
begin
626567696E00010100620000901451860000000000000000000000000000
54130647000090144C434F4445522E455845000000000000000000000000
4D5A90000B00010020000000FFFF190100013B00000000001E0000000100
010000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000BBBD008EDB8CC3891EEA04E8EC018D160000B409CD218D164000B409
CD21E80F057207FE06B005E82101E80000E8DB018D167300B409CD218D3E
C404E861028D36C4048D3EA404B90D00F3A48D36C4048D3EC803B90D001E
07AC0AC07403AAE2F8C7062505B007C7062705BF078D169800B409CD21E8
C8047333C606860401C706FA0400B4C706FC0400B4C70629052D008D36E7
048D3EE404B90300F3A4E84E07C70625050408C70627051308E82D02E854
02E88A02E8D502E85B03E81704723AC706B1050000C706B3050000E87303
E8CB03E88604E8FC04E84106E87905F7060A050100750BE8EB04E83006E8
6805EBEDE87704E81C06EB4B90C706B1050000C706B3050000FE068304E8
3503E88D03E84804C70688040000C7068A0400008B0E0C05E8AE04E8F305
E82B05F7060A0501007502E2EDE83204E8D705F7060A05010074B6E8C305
E87C01FF36F404FF36F6048F06F4048F06F604C706FA0400F8E8A7008D16
0102B409CD218D3EC404E82D01E80107A18A04A30405A18804A30205E8A4
08721E8D168702B409CD218D36A404E85105E80503E8F606E86C05E87205
E822018D168702B409CD218D36A404E83305E8E702E8D806E84E05A08404
3A068304762DFE068304C7061D050000C706B1050000C706B3050000E866
08E89506A18A04A30405A18804A30205E8A106EBC7E81E05E8CE00C3B430
CD213C027201C38D16F100E8C200C38CD3A1EA042BD883C3104343B44ACD
211E078B1EF4043B1EF804767283C310F606B00501740383C315B448CD21
A3EC04731C3D070074573D08007552D12EF404D12EF604D12EFA04D1260C
05EBC4B4488B1EF60483C310F606B00501740383C315CD21A3EE0473253D
070074213D0800751CD12EF404D12EF604D12EFA04D1260C05A1EC048EC0
B449CD21EB85C38D160C01E82C00B40ABA0E05CD211E078BF246AC8AC8B5
00E313FCAC3C20740B3C6172063C7A77022C20AAE2EEC3B44CCD21C3B409
CD218D164203B409CD21B44CCD21C38D16C404B43DB000CD217204A3D204
C38D162301B409CD218D36C404E8EB038D164203B409CD21E8C0FFB442B0
028B1ED204B90000BA0000CD218916A004A3A204B442B0008B1ED204B900
00BA0000CD21B800578B1ED204CD21890E9E0489169C04C38D3ED8038B16
A004A1A204B9000083F90A731BE825000BDB750B0BC075070BD27503EB0A
9080CA3052418BD3EBE00BC9750441B0305058AAE2FCC35150B90A008BC2
BA0000F7F18BD858F7F159C3A19C04E808008D3EE403E81D00C350D1E8B1
04D2E832E48AF858D0EC8ADCB90300D3E0D2E88AC88AC7C38BEC55505351
8B46FE8AC1D40A8BD8B0200AFF74048AC70430AA8AC30430AAB020AA8B5E
FC8D366B0532FF4BD1E3D1E303F3B90200F3A58B46FA0450D40A8BD832C0
0AFF740C80FF0A720380EF0A8AC70430AA8AC30430AA595B585D8BE5C38D
3EF1038B1E9E048AC7B103D2E8E80F00B03AAA8BC3B105D3E8243FE80100
C3D40A05303086E0AA8AC4AAC31E07B90800F7060A050200740249498D36
C4048D3ED404AC3C2E74070AC07403AAE2F4F7060A050200740DA08304D4
0A80C430043086E0ABB02EAA8D36E404B90300F3A48D36C4048D3ED404B9
0C00F3A6E301C38D16A901E82EFE8D16D404B8003DCD2172168BD8B43ECD
218D16C902B409CD21E85A007303E808FE8D16D404B43C33C9CD217204A3
E204C38D162301E8F6FD8B16A004A1A204F736FC048BD80BC0742B3D0100
770681FAE8037220528D165801B409CD215AE815007211810E0A0502000B
D2740143881E8404F9C3F8C3B401CD213C797502F8C33C597502F8C33C6E
7502F9C33C4E75E6F9C3B408CD213C0D7502F8C33C1B75F2F9C3B401CD21
3C687502F8C33C487502F8C33C787502F9C33C5875E6F9C3B80042B90000
BA25018B1EE204CD21C31E078B1EB105891E8C048D368304C606870400B9
3200BB0000AC02D8E2FBF6DB881E87048D367E048D3E0204E81502E81202
B800408B1EE204B91100BA9B05CD217222B80042B90000BA00008B1EE204
CD218D165903B925018B1EE204B80040CD217201C3E82401C3518D16B600
B409CD218D36C404E802011E8B0EFA04F606B00501740481C146018B161D
058B1ED204A1EC048ED8B8003F51CD21591F72323BC17406C7060A050100
F606B00501740903061D05A3F00459C3A3F004010621058316230500A1EC
048B0EF004E8630559C38D162301B409CD218D36C404E89A008D164203B4
09CD21E86FFC518D16DA00B409CD218D36D404E87F008B0EF2048B1EE204
1EA1EE048ED8B80040BA0000CD211F72063BC1720259C3E86E00C38D16DA
00B409CD218D36D404E84D00511E8B0EF2048B1E02050BDB75103B0E0405
760A8B0E0405810E0A050100290E0405831E0205008B1EE204A1EE048ED8
B80040BA000051CD21591F720C3BC17208A1EE04E8BE0459C3E81200C3B9
0D00B402AC0AC074068AD0CD21E2F5C3E810008D16D404B441CD218D1636
01E8C2FBC3B43E8B1ED204CD21C3B43E8B1EE204CD21C38D16CC00B409CD
215351551E8B2E0A05A1F00401068A048316880400BA0000F73629058BC8
8B361D05BF0000A1EE048EC0FC558BECFF362505FF3627058B1EFA04A1EC
048ED8FCE305FF56FEE2FB0BD2740AF746000100740FFF56FC8BE55D1F89
3EF2045D595BC38BE55D1F8916B305893EF20429162105831E230500B442
B0008B1ED2048B0E23058B162105CD215D595BC351B91E00E81800E2FBB8
0D0AAB59C350518BCAE80900E2FBB80D0AAB5958C351AC8AE0B104D2E804
303C3976020407AA8AC4240F04303C3976020407AA59C306A1EC048EC08D
362B058B3EFA04B94000F3A407C351B90F00E82E00E2FBB80D0AAB59C350
51558BEA8BC2BA0000B90300F7F18BC87306413EC7020000E80A00E2FBB8
0D0AAB5D5958C350535152AD50D0E8D0E8D7AA5850B90600D2E0D0E8D0E8
B90400D2EC02C4D7AA5AAC50B90400D2E6D0EED0EEB106D2E802C6D7AA58
243FD7AA5A595B58C3C7060A050000E85DFAE852FDE88C00E8EF00FF16AC
05FF16AE05C3E8F6FDF7060A0501007516E835FDFF16AC05FF16AE05E8E0
FDF7060A05010074EAA102050BC0751AA104050BC07513A085040AC07501
C38B1EB1053B1E8C047501C38D16FD02B409CD21C38D16CC00B409CD211E
A1EC048EC0BE00008BFE8B0EF004E316061FAC3C30720D3C3976083C4172
053C467701AAE2EC1F893EF004C38B1E1D058B0EF004A1EC048EC08BFB8D
36BA048A04F2AEE3328BDF268A054749E329E82D0072F2463A0475E181FE
C30472E78BF78B3E1D058B0EF00403CF2BCE890EF0041E061FF3A41FC38D
166402E868F93C30720E3C3976083C4172063C467702F8C3F9C31EB93700
D1E18B361D058BFEA1EC048ED88EC0ACE8D5FF72FAAAE2F71F568D3E8304
8B361D051E1E07B93700A1EC048ED8E80001E2FB1FB937008D368304BB00
00AC02D8E2FB0ADB74078D163902E803F95E8B3E1D058B0EF0042BCE890E
F0041EA1EC048ED88EC0F3A41F8D36A4048D3ED404B90D001E07F3A48D36
C4048D3ED404B90D00F3A6E321F606860401740DC706AC05350BC706AE05
CA0AC3C706AC05DD08C706AE056D0AC38D16A901E8A3F8803E8404017413
A083043C01740AE8D1FC8D169E02E88BF8F9C3F8C31E07B908008D36C404
8BFEAC3C2E74070AC07403AAE2F483EF02A08304D40A80C430043086E0AB
C3521E8B0EF004BA0000D1E9730142A1EE048EC0A1EC048ED833F633FFE3
05E81E00E2FBAC1F0BD2740C8B1EEC048EC357BF0000AA5F89161D05893E
F2045AC351AD3C3976022C072C30B104D2E080FC39760380EC0780EC3002
C4AA59C3521E33D2A1F004D1E8730142D1E8730242428BC8A1EE048EC0A1
EC048ED8BE00008BFEE305E81800E2FB57BF00008BCA1E07F3A45F1F893E
F20489161D055AC3505351B90406AD50D0E0D0E086E0D2E802C4AA5BAD50
D2E7D0E8D0E802C7AA5886E9D2E002C4AA595B58C38D16CC00B409CD211E
A1EC048EC08B0EF0042B0E1D05724CE34A8B361D058BFE061FAC3C2B723B
75052C2BEB34903C2D75052C2CEB2B903C3072273C3977072C300402EB1C
903C4172183C5A77072C41040CEB0D903C6172093C7A77052C610426AAE2
BE1F893EF004C3505351568B1EB1058B36B3052BCEE31A1E8ED8F6C7809C
D1E3AC02D89D740481F397A0E2EE1F891EB1055E595B58C300000D0A4C65
6869676820636F6465722E2056657273696F6E20302E362E0D0A55736520
6374726C2D627265616B20286374726C2D432920746F2061626F72742E24
0D0A0D0A50726573732072657475726E20286573632920746F206465636F
64652028656E636F64652920612066696C653A20240D0A456E746572206E
616D65206F662066696C6520746F20626520656E636F6465643A20240D0A
484558206F722058584520656E636F64696E673F2028482F582920240D0A
52656164696E6720696E7075742066696C6520240D0A50726F6365737369
6E672E240D0A57726974696E67206F75747075742066696C6520240D0A4E
65656420444F53207620322E30206F72206C617465722E240D0A496E7375
6666696369656E74206D656D6F72792E240D0A43616E2774206F70656E20
66696C6520240D0A4469736B2066756C6C206F72206F7468657220777269
7465206572726F722E240D0A4F75747075742066696C652077696C6C2062
65206C6172676572207468616E2036304B2E20446F20796F752077616E74
20746F2073706C697420697420696E746F2070617274733F2028592F4E29
240D0A496E70757420616E64206F75747075742066696C65732077696C6C
20686176652073616D65206E616D652E0D0A4368616E6765206E616D6520
6F6620696E7075742066696C6520616E642074727920616761696E2E240D
0A456E746572206E616D65206F662066696C6520746F206265206465636F
6465643A20240D0A43616E277420726561642066696C6520240D0A496E76
616C6964206865616465722E202043616E2774206465636F646520746869
732066696C652E240D0A4E6F206B65792E202043616E2774206465636F64
6520746869732066696C652E24202057696C6C206465636F646520746F20
66696C6520240D0A496E7075742066696C65206D75737420626520666972
73742070617274206F66207365726965732E240D0A4F7574707574206669
6C6520616C7265616479206578697374732E205772697465206F76657220
69743F2028592F4E2920240D0A5761726E696E673A204572726F72206465
74656374656420696E20696E7075742066696C652E204F75747075742066
696C65206D617920626520696E76616C69642E24202050726F6772616D20
7465726D696E6174696E672E244C656869676820636F6465722E20566572
73696F6E20302E362E0D0A436F6D6D656E747320746F20416C204D634C65
6E6E616E2C204C4A4D33404C45484947482E6269746E65742E0D0A0D0A44
69726563746F727920656E74727920666F7220656E636F6465642066696C
653A0D0A2020202020202020202020202020202020202020202020202020
2020202020202020202020202020202020202020200D0A0D0A626567696E
0D0A00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000626567696E00010100000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000363236353637363936450000000000000000000000000000
000000000000000000000000000000000000484558584652000000000000
00000000400B800F68010078007800000000000000000000000000000100
0E00000000000000000000000000000000000000000000000000001E002B
2D303132333435363738394142434445464748494A4B4C4D4E4F50515253
5455565758595A6162636465666768696A6B6C6D6E6F7071727374757677
78797A4A414E20464542204D415220415052204D4159204A554E204A554C
2041554720534550204F4354204E4F562044454320656E64206F6620636F
646564206461746100000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
end of coded data
===================== end of lcoder.hex ====================