Page 3 of 4

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 05:05
by lvd
нолька wrote:оффтопну чуток: еще один типичный баг использования дехруста с открытыми прерываниями im1 или im2, но без сохранения стека. Глючит оно не постоянно, а достаточно редко, и такой баг можно искать долго, если не знать эту фишку дехруста.

И в чём заключается баг? дехруст только pop hl и делает, на засёр стека ему наплевать, не?

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 05:39
by нолька
седня че день бесплатного ликбеза? дехруст кидает нераспакованый блок под конец туда, где он должен распаковаться минус 6 вроде байт. В результате если данные плохо сжимаемы, особенно если в конце блока, то распаковка идет в притык к упакованным данным. Дальше продолжать?

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 06:07
by lvd
Не надо юзать говнопакеры на спецтруме (100 лет уж как есть хрустопакер на пц) и говнодепакеры, которые сами чего-то куда-то кидают. Вырезать все кидания из депакера -- дело 5 минут.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 06:51
by ShadowMaker
Да есть уже вырезанные без перекидывальщиков, если кому надо, могу положить. Есть и депакер дехруста, который можно использовать с прерываниями, там вроде даже в комплекте с ним идёт сурс. Также бывает, что глюки из-за того, что пихают в буфер принтера депакер и грузят по 3D13, там IM1, в итоге депакер запарывается по приходу прерывания.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 07:55
by нолька
ShadowMaker, ну такое как правило вообще не работает. А вот описанный мной глюк встречается в софтах на втрдосе (из 5 раз зависнет).

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 09:45
by ShadowMaker
Ну там ведь тоже как повезет. Может придти и ничего не поменять в буфере. Тоже раз из пяти заглючит.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 13:08
by g00db0y
ShadowMaker wrote:Также бывает, что глюки из-за того, что пихают в буфер принтера депакер и грузят по 3D13, там IM1, в итоге депакер запарывается по приходу прерывания.

res 4,(iy+1) и обработчик прерываний в 128ом бейсике в буфере принтера не хозяйничает.

; FLAGS $5C3B 1 IY+$01 Various flags to control the BASIC system:
; Bit 0: 1=Suppress leading space.
; Bit 1: 1=Using printer, 0=Using screen.
; Bit 2: 1=Print in L-Mode, 0=Print in K-Mode.
; Bit 3: 1=L-Mode, 0=K-Mode.
; Bit 4: 1=128K Mode, 0=48K Mode. [Always 0 on 48K Spectrum]
; Bit 5: 1=New key press code available in LAST_K.
; Bit 6: 1=Numeric variable, 0=String variable.
; Bit 7: 1=Line execution, 0=Syntax checking.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 14:32
by ShadowMaker
Да я-то знаю :) Про типичные косяки говорю, которые возникают у людей.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 15:47
by deathsoft
g00db0y wrote:g00db0y

А у тебя же тут старый акаунт есть (акаунт goodboy), если хочешь могу тебе пароль обрезетить и мылом скинуть.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2012, 15:50
by deathsoft
Что мешает перед распаковкой сделать DI, а непосредственно перед вызовом точки входа распакованного кода сделать EI? И тогда 10 раз плевать на обработчик прерывания.