home *** CD-ROM | disk | FTP | other *** search
- 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 ====================
-
-
-