Inferno #07
31 мая 2005

Inferno - Errors in the previous numbers.

<b>Inferno</b> - Errors in the previous numbers.
                      Some errors


                             IG # 6

   In the description ALASM4.47 crept paragraph from long 
lines. You can easily can fix this text and repack magazine, 
received some tory harmless experience in using the package 
ZXRar + ZXUnRar:) 

   Another error in this description: the current offset DISP 
is defined lies at the fact as follows:

 a ORG 0

        ENT
 shift ORG a + shift

        DISP a
; Shift = org-disp


                             IG # 5

   Shiru Otaku (Alexander Semenov) announced additions to its
 reykasting article about:

  1. Nowhere is it said that sin, cos, tan in the article imply
 values ​​in degrees at the inlet and outlet.

  2. Specified speed Pspd, but in the formulas NADI
Sano, * 10, but not * Pspd.


                   IG # 5 (sent Hrumer'om)


                           Hrust 1.x:

   In my opinion, Sergei Mullin I once wrote that code
dehrusta allows and "narrow" codes "- if the overflow register
which is responsible for storing the length of codes. You 
simply insert consecutive multiple spreading codes, and obtain 
a restriction. But I do not checked:) Can it be used for 
dramatic change content - the code - graphics - the text. If we 
again met, For example, graphics - extending the code.



                            Hrust 2.x:

   000xxxx - disp12 (# e200-# f0ff), xxxx = 0001 (as it was by 
mistake published 0000) corresponds to the # e2.



                            LC 4.x:

   Now done unpacking at Sea LC4, inaccuracies in your 
description sequence: 11xxxx01, B: not 1 .. 15 identical bytes 
- should be 2 .. 16. Found an inaccuracy because of your 
description of the format done unpacking:)


   LC4 more effectively preserves large sequences
"Nepakuemyh bytes.


                            LC 5.x:

   The magazine says that in LC5.x gone up "backwards
in advance. "This is wrong. The flag is taken here with this 
code:  DLC3 EXA


         SLA D

         JR NZ, $ +6

         LD D, (HL)

         INC HL

         SLI D

        DJNZ DLC7
With the transition to DLC7.

   After receipt-dispH of the bitstream extracted feature
 lines of copy:

   0 - serial copying bytes;

  1 - copyback bytes
and placed in the CF.

    Piece of code that uses this value in the future:

         JR NC, $ +4

         DEC HL

         DEC HL

        INC HL

   Then, from the byte stream is extracted-dispL. As has been
observed in disp> 768 increases puts.

   Must be corrected as follows:


    Bitrate:

  % 1 - to take a byte from the byte stream;

  % 0,-puts,-dispH,% x (sign up direction: 0 - as

  typically, 1 - in reverse order),-dispL (from byte stream)

  - A link back to copying. Codes for the disp and puts are

  in the table above. When disp = 1, and sign the direction = 
0, ochevi 

  bottom, there is repetition of the previous byte ...


/ / Unpacker images LaserCompact5.2.
/ / C version: Hrumer 'HalfElf. 25.02.2005

typedef unsigned char BYTE;
typedef unsigned short WORD;

BYTE * lc_d_input;
BYTE lc_d_tagbyte;
BYTE lc_d_index;

/ / Conversion 000SgStolbRyadLin in 000SgLinRyadStolb
WORD getrealadr (WORD virtadr, WORD lb, WORD sc)
{

  WORD realadr;

  if (virtadr <lb)

  {

    WORD Lin = (virtadr '0x0007) <<8;

    WORD Ryd = (virtadr '0x0038) <<2;

    WORD Stolb = (virtadr '0x07C0)>> 6;

    WORD Sg = virtadr '0x1800;

    realadr = Sg | Lin | Ryd | Stolb;

  } Else {

    realadr = virtadr + sc;

  }

  return realadr;
}

BYTE lc_d_getbit (void)
{

  BYTE bit [] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 
0x01}; 

  if (lc_d_index == 0) lc_d_tagbyte = * lc_d_input + +;

  BYTE tmp = (lc_d_tagbyte 'bit [lc_d_index]) == 0? 0: 1;

  lc_d_index = (lc_d_index + 1)% 8;

  return tmp;
}

BYTE getcode (void)
{

  BYTE tmp = 0xFE;


  for (int i = 0; i <3; + + i)

  {

    if (lc_d_getbit ()) return tmp +1;

    tmp = (tmp <<1) | lc_d_getbit ();

  }

  return ((tmp <<1) | lc_d_getbit ()) + 9;
}

BYTE getlen (void)
{

  BYTE len = getcode ();

  if (len == 0x100 - 7)

  {

    len = * lc_d_input + +;

    - Len;

  } Else {

    if (len> 0x100 - 7) - len;

  }

  return len;
}

int delc52 (BYTE * source, BYTE * destination)
{

  lc_d_index = 0;

  BYTE * lc_d_output = destination;

  lc_d_input = source + source [7] + 9;


  WORD sc = (lc_d_input [-1]) <<8;

  WORD to = (sc '0x0300) <<3;

  WORD lb = (sc ^ 0x1800) '0xFC00;


  lc_d_output [getrealadr (to + +, lb, sc)] = * lc_d_input + +;


  while (true)

  {

    if (lc_d_getbit ())

    {

      lc_d_output [getrealadr (to + +, lb, sc)] = * lc_d_input 
+ +; 

    } Else {

      BYTE len = getlen ();

      if (len == 0xFF) break;


      WORD dist = getcode () <<8;

      BYTE napr = lc_d_getbit ();

      dist | = * lc_d_input + +;


      len =-len;

      dist =-dist;

      if (dist> 768) + + len;


      WORD from = to-dist;

      do

      {

        lc_d_output [getrealadr (to + +, lb, sc)] =

          lc_d_output [getrealadr (from, lb, sc)];

        from + = napr? -1: 1;

        - Len;

      } While (len> 0);

    }

  }
return 0;
}




Other articles:

Classics - Almanashnik. Alexander Pushkin.

For Coderz - Recognition and computation of arithmetic expressions on their character record.

Inferno - The authors of the magazine.

For Coderz - the discipline to create large projects.

Interview - Questions Konstantin Sviridov (Conan) on the site zxnext.narod.ru.

Likbez - The principles of converting graphics PC-ZX.

For Coderz - Programming disc changer / drive in Scorpio.

Softinka - DNA_OS v0.431 - package of utilities for working with hard drives, RAM-drives and floppy disks.

For Coderz - Programming under DNA_OS ZET-9, a package of tools to work with storage devices.

Softinka - The problems and shortcomings package of tools to work with storage devices DNA_OS.

Likbez - details about disk formats that are FAT.

Inferno - Entered from the editor.

Inferno - Errors in the previous numbers.

For Coderz - Small programmers' tricks.

Gameland - On the new games: Oneyroid, Dizzy forever, Dridlock.

For Coderz - Writing archive. Practical principles LZ packaging.

Gameland - Passage of new shipments for the game "Black Crow".

For Coderz - Programming for the video mode 384x304.

Inferno - Letters to the Editor.

Sound - Eden Megus'a about the tracker for the AY / YM.

Inferno - On the shell.

For Coderz - Fundamentals of optimization for the processor Z80.

Likbez - The location of partitions on your hard drive.

Gamedev - 3D projection of the floor / road in the games.

Sound - Wild ideas for AY trackers.

Advertising - Ads by Roman Chuunin.

Advertising - Ads by V. Bogdanovich

For Coderz - How a large Flexible Program.

Repair - Faults Pentagon 128 + and their repair.

Inferno - Content.

Miscellaneous - Thoughts on the contest for the best software.

Others - Transfer software on ZX Spectrum with a PC.

Video - On packaging for a video ZX Spectrum.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Scene - scene today: "Keep the Spectrum scene, like, pick up where it is hard!"
Weakly pass - those who are stuck in Chif.
Presentation - the story flushing first issue of Graster'a.

В этот день...   23 November