[not getting through to clax, so dropping xpost there]
HexDump file format as seen i.e. '0xHH,0xHH'; crlf every 16 bytes
both use DOS int 3F/40 for stdio.
(assumes bx=0 at start)
bin2hex.hex
Reconstruction:Usage example: hex2bin <bin2hex.hex >bin2hex.com
(assumes ax=bx=0 at start)ignores any input <'0' so skips '-' ,cr, lf
hex2bin.hex
Not tested on files larger than 64k but I think they should handle it.
On Wed, 12 Jun 2024 20:22:36 +0100
"Kerr-Mudd, John" <admin@127.0.0.1> wrote:
[not getting through to clax, so dropping xpost there]
Slightly smaller versions:
HexDump file format as seen i.e. '0xHH,0xHH'; crlf every 16 bytesUsage example: bin2hex <bin2hex.com >bin2hex.hex
both use DOS int 3F/40 for stdio.
(assumes bx=0 at start)
bin2hex.hex
0xB4,0x3F,0xB5,0x29,0xBA,0x4F,0x01,0xCD,0x21,0x91,0xE3,0x03,0x89,0xD6,0xBF,0xC3
0x2B,0x57,0xB8,0x30,0x78,0xAB,0xAC,0x43,0xD4,0x10,0x86,0xE0,0x27,0x04,0xF0,0x14
0x40,0xAA,0x30,0xF7,0x75,0xF4,0xB0,0x2C,0xAA,0x20,0xD3,0x75,0x05,0x4F,0xB8,0x0D
0x0A,0xAB,0xE2,0xDE,0x4F,0x5A,0xB3,0x01,0x89,0xF9,0x29,0xD1,0xB4,0x40,0xCD,0x21
0x4B,0xEB,0xBD
Usage example: hex2bin <bin2hex.hex >bin2hex.com
Reconstruction:
(assumes ax=bx=0 at start)ignores any input <'0' so skips '-' ,cr, lf
0x95,0xBA,0x47,0x01,0xB4,0x3F,0xB5,0xD2,0xCD,0x21,0x91,0xE3,0x03,0x89,0xD6,0xBF
hex2bin.hex
0xC3,0xD4,0x57,0x89,0xE8,0x88,0xC4,0xAC,0x3C,0x30,0x72,0x1C,0x3D,0x78,0x30,0x74
0x14,0x09,0xED,0x74,0x12,0x88,0xC2,0x95,0x24,0x4F,0xD4,0x37,0x30,0xF7,0x75,0xF5
0x88,0xD4,0xD5,0x10,0xAA,0x31,0xC0,0x95,0xE2,0xD9,0x43,0x5A,0x89,0xF9,0x29,0xD1
0xB4,0x40,0xCD,0x21,0x4B,0xEB,0xBA
Not tested on files larger than 64k but I think they should handle it.
hex2bin:
95 swap ax,bp
BA 47 01 dx=0147
B4 3F ah=3F
B5 D2 ch=D2
CD 21 int21
91 swap ax.cx
E3 03 jcxz+3 ;ret
89 D6 si=dx
BF di=d4c3
C3 ret
??? it may not come here ,0xD4,0x57,0x89,0xE8,0x88,0xC4,0xAC,0x3C,0x30,0x72,0x1C,0x3D,0x78,0x30,0x74 0x14,0x09,0xED,0x74,0x12,0x88,0xC2,0x95,0x24,0x4F,0xD4,0x37,0x30,0xF7,0x75,0xF5
0x88,0xD4,0xD5,0x10,0xAA,0x31,0xC0,0x95,0xE2,0xD9,0x43,0x5A,0x89,0xF9,0x29,0xD1
0xB4,0x40,0xCD,0x21,0x4B,0xEB,0xBA
On Fri, 14 Jun 2024 11:09:11 +0200,I wrote:
hex2bin:
95 swap ax,bp
BA 47 01 dx=0147
B4 3F ah=3F
B5 D2 ch=D2
CD 21 int21
91 swap ax.cx
E3 03 jcxz+3 ;ret
89 D6 si=dx
BF di=d4c3
C3 ret
??? it may not come here
,0xD4,0x57,0x89,0xE8,0x88,0xC4,0xAC,0x3C,0x30,0x72,0x1C,0x3D,0x78,0x30,0x74 >> 0x14,0x09,0xED,0x74,0x12,0x88,0xC2,0x95,0x24,0x4F,0xD4,0x37,0x30,0xF7,0x75,0xF5
0x88,0xD4,0xD5,0x10,0xAA,0x31,0xC0,0x95,0xE2,0xD9,0x43,0x5A,0x89,0xF9,0x29,0xD1
0xB4,0x40,0xCD,0x21,0x4B,0xEB,0xBA
That `xchg ax,bp` intro and the `si=dx` & `di=d4c3` outro codes, may be problematic, since they may rely on specific DOS vendor in order to work properly.
you attempts seems to be shortest available.
But my routines are much smaller and use lesser image byte count,
but of course they wont work under DOS and use 32 bit features :)
And MY hex format use the old DEBUG standard: (no 0x no h)
01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f "optional ASCII"
and depending on options line end with only CR or CR+LF.
are you interested in 32 bit code which could run in DOS environment ?
I hope it works as desired :)
hex2bin:0123 74 12 jz +12 ;**0135**no -- it's jz 137
0100 95 swap ax,bp
0101*BA 47 01 dx=0147
0104 B4 3F ah=3F
0106 B5 D2 ch=D2
0108 CD 21 int21
010a 91 swap ax,cx
010b E3 03 jcxz+3 ;ret
010d 89 D6 si=dx
010f BF di=d4c3
*C3 ret
D4 dummy
0112 57 push di ;d4c3
0113*89 E8 ax=bp
0115 88 C4 ah=al ;initial AL ; 1st byte- (hinybble)
0117 AC lodsb
0118 3C 30 cmp al,30
011a 72 1C jc +1c ;0138 ; invalid, ignore
011c 3D 78 30 cmp ax,"0x" ; reset bp if prefix
011f 74 14 jz +14 ;0135
0121 09 ED or bp.bp ; if no saved chr, go save it
0125*88 C2 dl=al ; save (hi) nybble012c 30 F7 xor bh,dh ; toggle to redo for 2nd byte
0127 95 swap ax,bp
0128 24 4F and al,4f
012a D4 37 DIVMOD 37
012e 75 F5 jnz -0a ;01250135*31 C0 ax-0
0130 88 D4 ah=dl
0132 D5 10 MULADD 010 ; combine nybbles
0134 AA stosb ; store
0137 95 swap ax,bp
0138 E2 D9 loop 0113
013a 43 inc bx
013b 5A pop dx
013c 89 F9 cx=di
013e 29 D1 sub cx,dx
0140 84 40 ah=040
0142 CD 21 int 21
0144 4B dec bx
0145 EB BA jmp 0101
you attempts seems to be shortest available.
But my routines are much smaller and use lesser image byte count,
but of course they wont work under DOS and use 32 bit features :)
And MY hex format use the old DEBUG standard: (no 0x no h)
On Sat, 15 Jun 2024 10:23:32 +0200
wolfgang kern <nowhere@never.at> wrote:
you attempts seems to be shortest available.
But my routines are much smaller and use lesser image byte count,
but of course they wont work under DOS and use 32 bit features :)
And MY hex format use the old DEBUG standard: (no 0x no h)
Yeah, sorry, I already have those pared down. I was allowing the
'0xAB,0xCD' format.
I was out walking to a waterfall on Friday and thought how to save 1
more byte:
hexdump, I mean bin2hex:
0xB4,0x3F,0xB5,0x26,0xBA,0x00,0x0F,0xCD,0x21,0x91,0xE3,0x03,0x89,0xD6,0xBF,0xC3
0x36,0x57,0xB8,0x30,0x78,0xAB,0xAC,0x42,0xD4,0x10,0x86,0xE0,0x27,0x04,0xF0,0x14
0x40,0xAA,0x31,0xF3,0x75,0xF4,0xB0,0x2C,0xAA,0x20,0xF2,0x75,0x05,0x4F,0xB8,0x0D
0x0A,0xAB,0xE2,0xDE,0x4F,0x5A,0x43,0x89,0xF9,0x29,0xD1,0xB4,0x40,0xCD,0x21,0x4B
0xEB,0xBE
On 16/06/2024 22:32, Kerr-Mudd, John wrote:
On Sat, 15 Jun 2024 10:23:32 +0200
wolfgang kern <nowhere@never.at> wrote:
you attempts seems to be shortest available.
But my routines are much smaller and use lesser image byte count,
but of course they wont work under DOS and use 32 bit features :)
And MY hex format use the old DEBUG standard: (no 0x no h)
Yeah, sorry, I already have those pared down. I was allowing the '0xAB,0xCD' format.
I was out walking to a waterfall on Friday and thought how to save 1
more byte:
hexdump, I mean bin2hex:
0xB4,0x3F,0xB5,0x26,0xBA,0x00,0x0F,0xCD,0x21,0x91,0xE3,0x03,0x89,0xD6,0xBF,0xC3
0x36,0x57,0xB8,0x30,0x78,0xAB,0xAC,0x42,0xD4,0x10,0x86,0xE0,0x27,0x04,0xF0,0x14
0x40,0xAA,0x31,0xF3,0x75,0xF4,0xB0,0x2C,0xAA,0x20,0xF2,0x75,0x05,0x4F,0xB8,0x0D
0x0A,0xAB,0xE2,0xDE,0x4F,0x5A,0x43,0x89,0xF9,0x29,0xD1,0xB4,0x40,0xCD,0x21,0x4B
0xEB,0xBE
can't detect on a first glimpse with my single 30% eye where you saved it :)
I was out walking to a waterfall on Friday and thought how to save 1
more byte:
hexdump, I mean bin2hex:
0xB4,0x3F,0xB5,0x26,0xBA,0x00,0x0F,0xCD,0x21,0x91,0xE3,0x03,0x89,0xD6,0xBF,0xC3
0x36,0x57,0xB8,0x30,0x78,0xAB,0xAC,0x42,0xD4,0x10,0x86,0xE0,0x27,0x04,0xF0,0x14
0x40,0xAA,0x31,0xF3,0x75,0xF4,0xB0,0x2C,0xAA,0x20,0xF2,0x75,0x05,0x4F,0xB8,0x0D
0x0A,0xAB,0xE2,0xDE,0x4F,0x5A,0x43,0x89,0xF9,0x29,0xD1,0xB4,0x40,0xCD,0x21,0x4B
0xEB,0xBE
can't detect on a first glimpse with my single 30% eye where you saved it :)
I use 'xor bx,si', to toggle, so ensuring bx is 0 after 2nd toggle - this allows 'inc bx' to set bl to 1 using a 1 byte instruction, rather than
'mov bl,1'; for int 0x21 to write to StdOut.
On Sat, 15 Jun 2024 09:14:10 +0200
wolfgang kern <nowhere@never.at> wrote:
I hope it works as desired :)
Well, I had tested it! And, JJ, I did state that it assumed ax=0 at start.
hex2bin:
0100 95 swap ax,bp ; 0 flag
0101*BA 47 01 dx=0147
0104 B4 3F ah=3F
0106 B5 D2 ch=D2
0108 CD 21 int21 ; Read (assumes bx=0 for Input)
010a 91 swap ax,cx ; put lth read in cx
010b E3 03 jcxz+3 ;ret ; nothing left
010d 89 D6 si=dx ; IBuff
010f BF di=d4c3 ; OBuff
*C3 ret
D4 dummy
0112 57 push di ;d4c3
0113*89 E8 ax=bp ; get 1st byte0123 74 12 jz +12 ;0137
0115 88 C4 ah=al ; ah=1st byte- (hinybble) - for 0x test
0117 AC lodsb
0118 3C 30 cmp al,30
011a 72 1C jc +1c ;0138 ; invalid, ignore
011c 3D 78 30 cmp ax,"0x" ; reset bp if prefix
011f 74 14 jz +14 ;0135
0121 09 ED or bp.bp ; if no saved chr, go save it
0125*88 C2 dl=al ; save (hi) nybble012c 30 F7 xor bh,dh ; toggle to redo for 2nd byte
0127 95 swap ax,bp
0128 24 4F and al,4f ; hex2nyb
012a D4 37 DIVMOD 37 ; in 4 bytes!
012e 75 F5 jnz -0a ;01250135*31 C0 ax-0 ; clear stored byte flag
0130 88 D4 ah=dl ; get hinyb, al is lonyb
0132 D5 10 MULADD 010 ; combine nybbles
0134 AA stosb ; add byte to output
0137 95 swap ax,bp ; store hinyb char
0138 E2 D9 loop 0113
013a 43 inc bx ; Output
013b 5A pop dx ; pt to OBuff
013c 89 F9 cx=di
013e 29 D1 sub cx,dx ; calc lth
0140 84 40 ah=040
0142 CD 21 int 21 ; Write
0144 4B dec bx
0145 EB BA jmp 0101
--
Bah, and indeed Humbug.
On Sun, 16 Jun 2024 21:20:04 +0100
"Kerr-Mudd, John" <admin@127.0.0.1> wrote:
On Sat, 15 Jun 2024 09:14:10 +0200
wolfgang kern <nowhere@never.at> wrote:
I hope it works as desired :)
Well, I had tested it! And, JJ, I did state that it assumed ax=0 at start. >>
hex2bin:0123 74 12 jz +12 ;0137
0100 95Â Â Â Â Â Â swap ax,bp ; 0 flag
0101*BA 47 01 dx=0147
0104 B4 3FÂ Â Â ah=3F
0106 B5 D2Â Â Â ch=D2
0108 CD 21Â Â Â int21 ; Read (assumes bx=0 for Input)
010a 91Â Â Â Â Â Â swap ax,cx ; put lth read in cx
010b E3 03Â Â Â jcxz+3Â Â ;ret ; nothing left
010d 89 D6Â Â Â si=dx ; IBuff
010f BFÂ Â Â Â Â Â di=d4c3 ; OBuff
*C3Â Â Â Â Â Â ret
D4 dummy
0112 57 push di ;d4c3
0113*89 E8 ax=bp ; get 1st byte
0115 88 C4 ah=al ; ah=1st byte- (hinybble) - for 0x test
0117 AC lodsb
0118 3C 30 cmp al,30
011a 72 1C jc +1c ;0138 ; invalid, ignore
011c 3D 78 30 cmp ax,"0x" ; reset bp if prefix
011f 74 14 jz +14 ;0135
0121 09 ED or bp.bp ; if no saved chr, go save it
0125*88 C2 dl=al ; save (hi) nybble012c 30 F7 xor bh,dh ; toggle to redo for 2nd byte
0127 95 swap ax,bp
0128 24 4F and al,4f ; hex2nyb
012a D4 37 DIVMOD 37 ; in 4 bytes!
012e 75 F5 jnz -0a ;01250135*31 C0 ax-0 ; clear stored byte flag
0130 88 D4 ah=dl ; get hinyb, al is lonyb
0132 D5 10 MULADD 010 ; combine nybbles
0134 AA stosb ; add byte to output
0137 95 swap ax,bp ; store hinyb char
0138 E2 D9 loop 0113
013a 43 inc bx ; Output
013b 5A pop dx ; pt to OBuff
013c 89 F9 cx=di
013e 29 D1 sub cx,dx ; calc lth
0140 84 40 ah=040
0142 CD 21 int 21 ; Write
0144 4B dec bx
0145 EB BA jmp 0101
I'm disappointed no-ones asked what all the 'bp' juggling's for.
(It's to save the first byte encountered to survive a subsequent read, to allow for the case where a hex pair are split by the read amt.)
On 18/06/2024 23:38, Kerr-Mudd, John wrote:
On Sun, 16 Jun 2024 21:20:04 +0100
"Kerr-Mudd, John" <admin@127.0.0.1> wrote:
On Sat, 15 Jun 2024 09:14:10 +0200
wolfgang kern <nowhere@never.at> wrote:
I hope it works as desired :)
Well, I had tested it! And, JJ, I did state that it assumed ax=0 at start. >>
hex2bin:0123 74 12 jz +12 ;0137
0100 95 swap ax,bp ; 0 flag
0101*BA 47 01 dx=0147
0104 B4 3F ah=3F
0106 B5 D2 ch=D2
0108 CD 21 int21 ; Read (assumes bx=0 for Input)
010a 91 swap ax,cx ; put lth read in cx
010b E3 03 jcxz+3 ;ret ; nothing left
010d 89 D6 si=dx ; IBuff
010f BF di=d4c3 ; OBuff
*C3 ret
D4 dummy
0112 57 push di ;d4c3
0113*89 E8 ax=bp ; get 1st byte
0115 88 C4 ah=al ; ah=1st byte- (hinybble) - for 0x test >>> 0117 AC lodsb
0118 3C 30 cmp al,30
011a 72 1C jc +1c ;0138 ; invalid, ignore
011c 3D 78 30 cmp ax,"0x" ; reset bp if prefix
011f 74 14 jz +14 ;0135
0121 09 ED or bp.bp ; if no saved chr, go save it
0125*88 C2 dl=al ; save (hi) nybble012c 30 F7 xor bh,dh ; toggle to redo for 2nd (lo) byte
0127 95 swap ax,bp ; get other chr (hi 1st, then lo)
0128 24 4F and al,4f ; hex2nyb
012a D4 37 DIVMOD 37 ; in 4 bytes!
012e 75 F5 jnz -0a ;01250135*31 C0 ax-0 ; clear stored byte flag
0130 88 D4 ah=dl ; get hinyb, al is lonyb
0132 D5 10 MULADD 010 ; combine nybbles
0134 AA stosb ; add byte to output
0137 95 swap ax,bp ; store hinyb char
0138 E2 D9 loop 0113
013a 43 inc bx ; Output
013b 5A pop dx ; pt to OBuff
013c 89 F9 cx=di
013e 29 D1 sub cx,dx ; calc lth
0140 84 40 ah=040
0142 CD 21 int 21 ; Write
0144 4B dec bx
0145 EB BA jmp 0101
I'm disappointed no-ones asked what all the 'bp' juggling's for.
(It's to save the first byte encountered to survive a subsequent read, to allow for the case where a hex pair are split by the read amt.)
I didn't ask because I saw it in use for initial AL and later as a temp storage.
but I weren't sure where your loop count joined in, assumed it returned
by DOS call.
On 17/06/2024 21:57, Kerr-Mudd, John wrote:
...
I was out walking to a waterfall on Friday and thought how to save 1
more byte:
hexdump, I mean bin2hex:
0xB4,0x3F,0xB5,0x26,0xBA,0x00,0x0F,0xCD,0x21,0x91,0xE3,0x03,0x89,0xD6,0xBF,0xC3
0x36,0x57,0xB8,0x30,0x78,0xAB,0xAC,0x42,0xD4,0x10,0x86,0xE0,0x27,0x04,0xF0,0x14
0x40,0xAA,0x31,0xF3,0x75,0xF4,0xB0,0x2C,0xAA,0x20,0xF2,0x75,0x05,0x4F,0xB8,0x0D
0x0A,0xAB,0xE2,0xDE,0x4F,0x5A,0x43,0x89,0xF9,0x29,0xD1,0xB4,0x40,0xCD,0x21,0x4B
0xEB,0xBE
can't detect on a first glimpse with my single 30% eye where you saved
it :)
I use 'xor bx,si', to toggle, so ensuring bx is 0 after 2nd toggle -
this
allows 'inc bx' to set bl to 1 using a 1 byte instruction, rather than
'mov bl,1'; for int 0x21 to write to StdOut.
clever move :) is that magic waterfall near Stonehenge ?
clever move :) is that magic waterfall near Stonehenge ?No magic.
Have you looked at pouet.net (clever DemoScene coders; there's a
recent^w Feb entry for a (display of course) that uses a VM (forth
like); it's something that hits my buttons.
https://www.pouet.net/prod.php?which=96107
I don't understand it yet; but the concept looks intriguing; use a
select - I'm thinking 4 bit for 16, they use 3, so only 8 instructions;
set of Virtual OP codes to erm do something.
On 01/07/2024 12:37, Kerr-Mudd, John wrote:
https://www.pouet.net/prod.php?which=96107
lovebyte solution is interesting indeed.
On 01.07.2024 17:40, wolfgang kern wrote:
On 01/07/2024 12:37, Kerr-Mudd, John wrote:
https://www.pouet.net/prod.php?which=96107
lovebyte solution is interesting indeed.
30 years ago a tiny program called mars.exe was posted in
usenet which I found so fascinating that I disassembled it,
added some colors and did some optimization. I can't run
DOS programs any more, but the Windows version (not as small
as the DOS version) still works in Win10. Execute the batch
below to generate the exe and just move the mouse. Press any
key to exit.
DOS and Windows source in:
https://www.onlib.de/pub/assembler/erde.zip
@echo off
certutil -f -decode %~f0 erde.exe>nul
erde.exe
goto :eof
-----BEGIN CERTIFICATE----- TVpgAQEAAAAEAAAA//8AAGABAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAoAAAAA4fug4AtAnNIbgBTM0hTmljZSB0byBtZWV0IHNvbWVi b2R5IHdobyBpcyBzdGlsbCB1c2luZyBET1MsDQpidXQgaGlzIHByb2dyYW0gcmVx dWlyZXMgV2luMzIuDQokAFBFAABMAQEAUHmlNgAAAAAAAAAA4AAPAQsBBQwADAAA AAAAAAAAAABUEwAAABAAAAAwAwAAAEAAABAAAAACAAAEAAAAAAAAAAQAAAAAAAAA ADADAAACAAAAAAAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAA dBAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAB0AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALnRleHQAAAAYGAMAABAAAAAMAAAAAgAA AAAAAAAAAAAAAAAAIAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiEAAABhEAAPIQAAAAAAAA yBEAAAASAAAOEgAAIBIAACwSAAA6EgAA2hEAAO4RAADAEQAAsBEAAKIRAACUEQAA gBEAAGwRAABgEQAAAAAAAHoSAACGEgAAlhIAAKoSAAC6EgAAzhIAAOQSAADuEgAA AAAAANIQAAAAAAAAAAAAAMQQAAAAEAAAIBEAAAAAAAAAAAAAFBEAABAQAABWEgAA AAAAAAAAAABMEgAAUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0VSTkVMMzIuZGxs AADiEAAABhEAAPIQAAAAAAAAAABHZXRUaWNrQ291bnQAAAAAR2V0TW9kdWxlSGFu ZGxlQQAAAABFeGl0UHJvY2VzcwBVU0VSMzIuZGxsAADIEQAAABIAAA4SAAAgEgAA LBIAADoSAADaEQAA7hEAAMARAACwEQAAohEAAJQRAACAEQAAbBEAAGARAAAAAAAA AABSZWxlYXNlREMAAABEaXNwYXRjaE1lc3NhZ2VBAAAAAFRyYW5zbGF0ZU1lc3Nh Z2UAAAAAR2V0TWVzc2FnZUEAAABTaG93Q3Vyc29yAAAAAFNldEN1cnNvclBvcwAA AABHZXREQwAAAENyZWF0ZVdpbmRvd0V4QQAAAEdldFN5c3RlbU1ldHJpY3MAAAAA UmVnaXN0ZXJDbGFzc0EAAAAATG9hZEN1cnNvckEAAABEZWZXaW5kb3dQcm9jQQAA AABFbmRQYWludAAAAABCZWdpblBhaW50AAAAAFBvc3RRdWl0TWVzc2FnZQBHREkz Mi5kbGwAehIAAIYSAACWEgAAqhIAALoSAADOEgAA5BIAAO4SAAAAAAAAAABEZWxl dGVEQwAAAABEZWxldGVPYmplY3QAAAAAQ3JlYXRlU29saWRCcnVzaAAAAABTZWxl Y3RPYmplY3QAAAAAQ3JlYXRlRElCU2VjdGlvbgAAAABDcmVhdGVDb21wYXRpYmxl REMAAAAAQml0Qmx0AAAAAFJlY3RhbmdsZQADAAAA1BRAAAAAAAAAAAAAAAAAAAAA AAAAAAAABgAAAAAAAAAiE0AAZXJkZQAAKAAAAAABAAA4////AQAYAAAAAAAAAAAA 6AMAAOgDAAAAAAAAAAAAAAAAAABoAAAAAP8VCBBAAKMKE0AAaAB/AABqAP8VFBBA AKMSE0AAaPoSQAD/FSwQQAAJwHUIav//FQQQQABqAP8VKBBAAKOEG0AAagH/FSgQ QACjiBtAAGoA/zUKE0AAagBqAP81iBtAAP81hBtAAGoAagBoAAAAkGgnE0AAaCIT QABqAP8VEBBAAAnAdKejjBtAAFD/FTAQQACjkBtAAGoA/xVkEEAACcB0iqOUG0AA agBqAGicG0AAagBoKBNAAP81kBtAAP8VYBBAAAnAD4Rh////o5gbQABQ/zWUG0AA /xVcEEAACcAPhEf///9qAP8VWBBAAKOgG0AAaMgAAABoyAAAAP8VNBBAAGoA/xU4 EEAA6KIBAADodwMAAGoAagBqAGi8J0MA/xU8EEAACcB0GGi8J0MA/xVAEEAAaLwn QwD/FUQQQADr0/81oBtAAP8VVBBAAP81mBtAAP8VVBBAAP81lBtAAP8VUBBAAP81 kBtAAGoA/xVIEEAAagD/FQQQQACLRCQIg/gPdC6D+AJ0HD0CAQAAD4QQAQAAPQAC AAAPhKcAAAD/JRgQQABqAP8VJBBAADHAwhAAaNgnQwD/dCQI/xUgEEAAo5sVQAD/ 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
-----END CERTIFICATE-----
Herbert Kleebauer <klee@unibwm.de> writes:
30 years ago a tiny program called mars.exe was posted in
usenet which I found so fascinating that I disassembled it,
added some colors and did some optimization.
Who didn't!? Those were the fun days.
Does anyone know who wrote it - and does he know that we're still
talking about him and his demo?
Herbert Kleebauer <klee@unibwm.de> writes:
30 years ago a tiny program called mars.exe was posted in
usenet which I found so fascinating that I disassembled it,
added some colors and did some optimization.
Who didn't!? Those were the fun days.
Does anyone know who wrote it - and does he know that we're still
talking about him and his demo?
30 years ago a tiny program called mars.exe was posted in
usenet which I found so fascinating that I disassembled it,
added some colors and did some optimization.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 339 |
Nodes: | 16 (2 / 14) |
Uptime: | 05:26:41 |
Calls: | 7,467 |
Calls today: | 3 |
Files: | 12,691 |
Messages: | 5,628,213 |