profile
viewpoint
Jim Leonard MobyGamer USA http://trixter.oldskool.org/ I make demoscene productions, and code for old DOS systems in assembly. Because I'm old.

MobyGamer/MONOTONE 53

A multi-voice tracker for the PC speaker.

MobyGamer/total-dos-launcher 24

A system for easily loading and running thousands of DOS programs on vintage hardware

MobyGamer/XDC 18

XDC 8088+CGA video/animation compiler

MobyGamer/CGACompatibilityTester 14

The CGA Compatibility Tester: Tests ISA videocards for register-level compatibility with CGA

MobyGamer/TOPBENCH 5

The Oldskool PC Benchmark

MobyGamer/TPLibs 4

Turbo Pascal 7-compatible libraries and utilities that are useful in creating full-user-experience DOS programs

MobyGamer/UNITS 3

Turbo Pascal support units for some MobyGamer projects.

MobyGamer/archivists-guide-to-kryoflux 1

An un-official user guide for the KryoFlux written by archivists, for archivists

MobyGamer/TX-DOS 1

Modified sources of MS-DOS 1.25 and 2.0

MobyGamer/lzsa 0

Byte-aligned, efficient lossless packer that is optimized for fast decompression on 8-bit micros

issue commentemmanuel-marty/lzsa

Bug in decompress_small_v1.S for 8088?

The output of the win32 lzsa compressor matched the file you provided. I did this to ensure the compressor wasn't generating incorrect data.

The original code makes assumptions that it is running in real mode, with DS:SI set to the source and ES:DI set to the destination, and CS:BX set to the shift table. Since you changed cs:xlat to xlatb, the shift isn't working because xlatb pulls from ds:bx, so change that to shr al,4 (you don't need the table either, 32-bit is faster than the table). See if that fixes your issue.

In the original code, when match copies occur, ds is changed to point to the output buffer because the match is from inside the output buffer, then after the rep movsb is finished it is changed back to the compressed source. I don't think your code is doing this; I don't see any DS manipulations.

Try fixing these both and seeing if that helps.

odzhan

comment created time in 15 days

issue commentemmanuel-marty/lzsa

Bug in decompress_small_v1.S for 8088?

I tested the 8088 code I wrote (the speed versions) and they test perfectly with your source data. My test procedure:

  1. Took your source hexdump and made it a file
  2. Compressed it with the win32 compressor
  3. Decompressed it using https://github.com/emmanuel-marty/lzsa/blob/master/asm/8088/LZSA1FTA.ASM in an emulator
  4. Compared to original (identically)

If there are errors, they are either in the NASM conversions of the code I contributed, or in your 32-bit conversion of that code.

odzhan

comment created time in 15 days

issue commentemmanuel-marty/lzsa

Bug in decompress_small_v1.S for 8088?

Does it decompress correctly using the other (speed-optimized) variant of the code?

odzhan

comment created time in 15 days

created tagMobyGamer/TOPBENCH

tag0.40

The Oldskool PC Benchmark

created time in 24 days

release MobyGamer/TOPBENCH

0.40

released time in 24 days

push eventMobyGamer/TOPBENCH

mobygamer

commit sha f5b195c0dae1c988f999eada2fc350affc56bf6d

Update end-user binary distribution

view details

push time in 24 days

push eventMobyGamer/TOPBENCH

mobygamer

commit sha 14457f091f511688a9bfa6af3a3f465bf7f43829

Change benchmark->compare to be clearer Benchmark->Compare screen now more clearly communicates what aspects of a system are faster/slower than another system. Also optimized for memory; gained about 10KB free RAM.

view details

mobygamer

commit sha 32ab7341f146c5ad24231ef1ca8536a178576a43

2020 Q1 database update

view details

push time in 24 days

startedaskeksa/Shrinkler

started time in a month

starteduniabis/z80depacker

started time in a month

fork MobyGamer/Remixatron

Infinite Jukebox on the command line in Python. It groups musically similar beats of a song into clusters and then plays a random path through the song that makes musical sense, but not does not repeat. It will do this infinitely.

fork in a month

starteddrensin/Remixatron

started time in a month

startedkarcherm/xtize

started time in 2 months

issue openedjoncampbell123/dosbox-x

Visible memory inspector

During reverse-engineering or debugging programs, it would be educational to have a visible memory inspector feature of the debugger. An area of memory could be indicated by either segment:offset in real mode, or absolute address in protected mode. The area could be visualized in a rectangular window, the dimensions and color depth (ie. how many bits per pixel) could be specified by the user. This window would remain open until closed, and would live-updated as the program runs or is stepped through in the debugger.

The intended use of this feature is to see back buffers of graphics screens before they are made visible. For example, games that run in CGA sometimes write to a linear 16K buffer before they are REP MOVSW'd to the visible interlaced buffer, performing translation in the process. Having the back buffer visible would allow inspection of how the game engine operates when limited by CGA.

created time in 3 months

PR opened emmanuel-marty/lzsa

Rewrite 8088 jumptable decompressor for maximum speed

This is a rewrite of LZSA1JMP.ASM to use a 256-element jumptable, which allows the code to handle all of the hot paths (common cases) without any branching. This not only reduces branches (which are very costly on x86) to a bare minimum, but also grants us foreknowledge in a decode path of what steps can be skipped.

The new code is 12.7% faster than the old code, and assembles to less than 3K of object code and data.

+477 -228

0 comment

1 changed file

pr created time in 3 months

create barnchMobyGamer/lzsa

branch : decompressor/8086_speed_jumptable

created branch time in 3 months

push eventMobyGamer/lzsa

mobygamer

commit sha c38b582e73b4ff244c5869036c9dc484ded6a1bf

Time-efficient LZSA2 decompressor This commit provides a time-effecient LZSA2 decompressor for the 8088 (and higher) CPU. Decompression speed is roughly 50% faster than ZX7 on the same hardware.

view details

Emmanuel Marty

commit sha 19e8bc0468c194c3dceabbd6eb27b49433c03b86

Merge pull request #17 from MobyGamer/decompressor/8086_speed Time-efficient LZSA2 decompressor

view details

Emmanuel Marty

commit sha 981b1d592543705a6dbcc045d310bf83cd2ca8d1

NASM versions of Jim Leonard's speed-optimized depackers

view details

Emmanuel Marty

commit sha 0b540431fcd610bc6ec97c88f633414080200859

Fix comments

view details

Emmanuel Marty

commit sha 710d7e05d6dcdf7cc5552f05361274f7e8c95a4b

Fix comments

view details

Emmanuel Marty

commit sha 2d65f2a7c863413a7ae06a158afc153711877ea3

Bump version

view details

Emmanuel Marty

commit sha 081a29a3dbd447fbd4281312c50d725ccb726572

Fix copying multiples of 256 bytes

view details

Emmanuel Marty

commit sha 04cc67cf429207886f281f1b0f2d7a827389d890

Add refence to The Hollow

view details

Emmanuel Marty

commit sha 9f313d6ee6e890596168f73d5e1f9261833beb1a

Handle EOD in C depacker; fix #18; fix typos in usage

view details

Emmanuel Marty

commit sha 0c4dbf2b72b2249435ad8ede6381a9ceb9b844c1

Add files via upload Show decompression safety distance for raw blocks

view details

introspec

commit sha fcfba056d2f00d275e918d498b6fef8e6c0677bc

Add files via upload LZSA2 decompressors with support for -b option.

view details

introspec

commit sha fd61f403ad751b4dc70876f43dbd313298530fa3

LZSA1 decompressors with added support for -b.

view details

introspec

commit sha 607b26d3372f67bbaba1978bc77509c98c468f8d

Delete unlzsa_fast_v1.asm

view details

introspec

commit sha cca79e3e597b7147ec2dd72090cfc799758f1c86

Delete unlzsa_small_v1.asm

view details

Emmanuel Marty

commit sha 4835e4c26c4429c80932d204f03b6cc6c9ee8389

Support backward decompression

view details

Emmanuel Marty

commit sha fd70be918caee35713a4ecb12e58513f198e0710

Merge pull request #19 from specke/master Support for -b in Z80 decompressors

view details

Emmanuel Marty

commit sha 316dfdcdce82cddeed6939930110bbe53b118732

Fix comments, remove unused vars

view details

Emmanuel Marty

commit sha ae4cc12aedafe53bcfbcb48abfbbd47f7e6d4e8c

Use ACME syntax

view details

Emmanuel Marty

commit sha b613d01565fa820317c430be9e6584cfa78f6a8a

Test incompressible data with raw blocks

view details

Emmanuel Marty

commit sha 82edcb8bb53b9c1e1a95b157f446d5fc3fc8dde0

Fix literal runs that are multiple of 256 bytes

view details

push time in 3 months

push eventMobyGamer/MONOTONE

mobygamer

commit sha 1a65e41c56cb3f7796771835807affaea352f20c

Reduce memory usage when diskwriter not in use

view details

push time in 4 months

more