User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: Запакованный текст на C64 и Apple][

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    12.02.2008
    Адрес
    S-Posad
    Сообщений
    472
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Запакованный текст на C64 и Apple][

    Помогите распокавать текст. Речь идет о игрушке (квест) "Алиса в стране чудес" вышедшей в 1985 году на Commodore64 и Apple][.
    Для обоих машин используется идентичная система хранения текста - прям блок содержащий набор фраз у обох машин байт в байт.

    Вот например первый попавшийся персонаж заявляет такую фразу:



    D007 - отсюда движок его начинает читать, но там в каждом байте - от 1 до 3 букв.

    D000- 00 00 00 00 00 FF 4E CC D0 30 35 2F 80 04 EC CD .....ЪnLP.....ЛM
    D010- 05 4B 39 A4 4C D0 18 1A 97 C0 02 76 66 F4 89 A0 .k.$lP...@.жфТ.
    D020- 69 59 C2 D4 66 80 C0 D4 BE 00 20 8D D0 02 B5 40 иyBTф.@T>...P.5
    D030- 9D 99 A0 AC 21 DD 42 CE 38 2B 00 08 A0 08 22 14 .. ,.]bN.... ...
    D040- CC 10 30 0A 19 81 B6 31 A9 E0 00 FF 0B 12 32 EE L.....6.)Ю.Ъ...Н
    D050- 80 D4 2C 06 14 D5 06 A1 69 82 21 98 69 06 01 2E .T...U.!и...и...
    D060- 03 75 D1 40 35 F0 00 FF 1C 1A 5D D0 01 62 46 5F .уQ.П.Ъ..}P.бf.
    D070- 00 00 8C C2 3A A4 65 06 A1 69 80 D3 2B 86 8F 00 ...B.$е.!и.S....

    1байт: = "I'"
    2байт: = "M"
    3байт: = "L"
    4байт: = "A"
    5байт: = "TE"
    В общем , где-то 1-2 знака в байте, иногда вроде бы до 3-х, ну это включая пробелы

    Скорее всего, упаковка без сложного сжатия, просто отрезаются старшие разряды (вероятно, отрезаются 3, остаётся 5), оставшиеся запихиваются в байты. При этом эти 5 - не коды ASCII, а указатели на таблицу вида char[0x40] = (' ', 'a', 'b'... и какие-то ещё символы). Известно, что есть два спецсимвола (действуют после раскодирования) : 0x1B и 0xFF. 0x1B - после него следующий символ выводится в видеопамять через другую таблицу, а 0xFF - скорее всего конец строки (неизвестно, как он возникает из 5 бит). Также есть предположение, что байты в выбираются не подряд, а, в зависимости от чего-то, возможны переходы назад/вперед.
    Причем вот что ещё: там как действительно сокращённый знакогенератор, т.е. в "архиве" лежит некий код , который тоже ещё не символы, он уже в обычную кодировку преобразуется по таблице. Ну там просто " abcdef...какие-то ещё символы"

    В 92 году, в Москве, человек имея только бумажную распечатку куска текстового блока, смог выяснить принцип системы хранения. Значит это реально и сейчас?

    Для C64 тоже самое, только смешение блока в ОЗУ другое:
    Последний раз редактировалось GARNIZON; 09.12.2018 в 16:21.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    GARNIZON, ты как это ломаешь?
    если идой ты выложи весь пак
    если ковыряешь как то по другому то дай снап памяти и точку входа

    - - - Добавлено - - -

    для с64
    с адреса C000 находится бакграунд
    с адреса с800 находится набор тайлов бакграунда
    с адреса D000 находится фонт
    С уважением,
    Jerri / Red Triangle.

  4. #3

    Регистрация
    12.02.2008
    Адрес
    S-Posad
    Сообщений
    472
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    ты как это ломаешь?
    если идой ты выложи весь пак
    если ковыряешь как то по другому то дай снап памяти и точку входа
    Спасибо огромное! Ковыряю просто отладчиком эмулятора.
    Поделитесь плиз, как вам это удалось сделать? Использовался диск от Комодора?

    В аттаче дамп от Apple

    Дамп снят во время выполнения команды по адресу 4372.
    В дампе нет региона Cxxx - это порты ввода-вывода (в дампе заполнен NOP)

    Код:
    Сейчас известны следующие метки:
    
    0076      DepackCnt  
    0077         pBuf_L  
    0078         pBuf_H  
    0079            Acc  
    007A          SaveY  
    00A5          CursH  Координата курсора по горизонтали
    00A6        pSLineL  
    00A7        pSLineH
    00A8           Attr  Аттрибут текстового знакоместа
    00DE        pBufX_L
    00DF        pBufX_H  
    
    41F8          CursY  Координата курсора по вертикали
    4201     EncoderTab  Таблицы декодера  
    4221    EncoderTab2
    4311      CallPrint  Отсюда начинается вывод фразы. A содержит номер фразы
    4328          Print  Y - счётчик бит восстановленного байта?
    432F           Loop  
    4362         Byte1B  Байт, следующий за 1B, декодируется по отдельной таблице
    436F          COut1  
    4375             CR  Перевод строки ?
    438F           COut  C=0 на обычные символы и C=1 на FF
    43A8         COut.1  C=0 на выходе
    43BA        ByteFF2  
    43CF     Init_Print  Вызывается перед обращением к Print
    43F8         Encode  
    441F        EncLoop  
    
    Эти процедуры могут изменять отображение банков памяти, но,
    вроде бы, мне не встречалось их вызовов в дешифраторе текста:
    
    5599        MemSet1  Включает банк 1 на Dxxx (сегмент F)
    55A3        MemSet2  Включает банк 0 на Dxxx (сегмент E)
    55AD        MemSet3  Включает ПЗУ (сегмент 6-7)
    
    Вывод строки начинается от процедуры CallPrint, ей в регистре A передаётся номер фразы,
    но, возможно, для окончательного выбора фразы используются какие-то ещё данные (например, номер экрана).
    
    Данные для разных фраз могут браться из разных частей памяти, например, наблюдалась выборка из Dxxx.
    Возможно, байты фразы идут не подряд!
    Итоговый результат (код символа) передаётся процедуре COut для вывода в видеоозу.
    Вложения Вложения
    Последний раз редактировалось GARNIZON; 10.12.2018 в 11:47.

  5. #4

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    GARNIZON, просто есть такая штука ICU64 и IDA
    vice как самый удобный эмуль с64

    Эппловскую версию наверное ковырять не буду, не уверен в адекватном эмуле.

    в вайсе нахожу заполнение текстовой области и ставлю там ватчпойнт
    как только идет обращение смотрю откуда и соответственно говорю иде где код
    но я так понял там некий интерпретатор
    вроде SCUMM

    но настолько я конечно его не ковырял

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    я читать умею
    но вот есть нюанс
    RADIX-50 — это символьный код, который позволяет записать в одном 16-битном слове три символа
    16/3=5
    5=32 символа
    у них 40 символов
    как они кодируют еще 8?
    С уважением,
    Jerri / Red Triangle.

  6. #5

    Регистрация
    12.02.2008
    Адрес
    S-Posad
    Сообщений
    472
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Эппловскую версию наверное ковырять не буду
    Что вы, и на этом спасибо! Единственное что, нельзя ли увидеть в моем дампе хотя бы - где хранится каталог фраз. Т.е. есть ли где-то в явном виде начала строк?

  7. #6

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GARNIZON Посмотреть сообщение
    Что вы, и на этом спасибо! Единственное что, нельзя ли увидеть в моем дампе хотя бы - где хранится каталог фраз. Т.е. есть ли где-то в явном виде начала строк?
    насчет каталога фраз
    он их высчитывает
    но есть ссылки на какие то блоки вот этих видимо фраз

    Код:
    RAM:7254 txt_blks_l:     .BYTE    0,   0, $10, $D5,   7, $DB, $7E, $C0, $51, $33, $22, $6E, $C1, $28, $82,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
    RAM:7270 txt_blks_h:     .BYTE    0, $77, $7A, $7A, $7C, $7E, $82, $84, $86, $8A, $8F, $B6, $BC, $BE, $BE,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0
    
    RAM:734E dep_blocktxt:                           ; CODE XREF: sub_72D3:loc_732Bp
    RAM:734E                 INC     byte_7291
    RAM:7351                 TAX
    RAM:7352                 LDA     txt_blks_l,X
    RAM:7355                 STA     block_text
    RAM:7357                 LDA     txt_blks_h,X
    RAM:735A                 STA     block_text+1
    RAM:735C                 JSR     init_depak
    RAM:735F                 LDY     #0
    RAM:7361                 JSR     depak_message
    RAM:7364                 RTS
    RAM:7364 ; End of function dep_blocktxt
    RAM:7364
    RAM:7365
    RAM:7365 ; =============== S U B R O U T I N E =======================================
    RAM:7365
    RAM:7365
    RAM:7365 depak_message:                          ; CODE XREF: dep_blocktxt+13p
    RAM:7365                 LDX     message_num
    RAM:7368                 BEQ     depak
    RAM:736A                 LDY     #8
    RAM:736C
    RAM:736C text_seek:                              ; CODE XREF: depak_message+11j
    RAM:736C                                         ; depak_message+18j
    RAM:736C                 LDA     (in_ptr),Y
    RAM:736E                 INC     in_ptr
    RAM:7370                 BNE     loc_7374
    RAM:7372                 INC     in_ptr+1
    RAM:7374
    RAM:7374 loc_7374:                               ; CODE XREF: depak_message+Bj
    RAM:7374                 CMP     #$FF
    RAM:7376                 BNE     text_seek
    RAM:7378                 LDA     (in_ptr),Y
    RAM:737A                 STA     cur_in_bs
    RAM:737C                 DEX
    RAM:737D                 BNE     text_seek
    RAM:737F
    RAM:737F depak:                                  ; CODE XREF: depak_message+3j
    RAM:737F                                         ; depak_message+3Ej
    RAM:737F                 JSR     pick_char
    RAM:7382                 CMP     #$FF
    RAM:7384                 BEQ     char_decrunched
    RAM:7386                 CMP     #$1B
    RAM:7388                 BEQ     use_second_charset
    RAM:738A                 AND     #$1F
    RAM:738C                 TAX
    RAM:738D                 LDA     first_char_set,X
    RAM:7390                 JMP     char_decrunched
    RAM:7393 ; ---------------------------------------------------------------------------
    RAM:7393
    RAM:7393 use_second_charset:                     ; CODE XREF: depak_message+23j
    RAM:7393                 JSR     pick_char
    RAM:7396                 CMP     #$FF
    RAM:7398                 BEQ     char_decrunched
    RAM:739A                 AND     #$1F
    RAM:739C                 TAX
    RAM:739D                 LDA     second_char_set,X
    RAM:73A0
    RAM:73A0 char_decrunched:                        ; CODE XREF: depak_message+1Fj
    RAM:73A0                                         ; depak_message+2Bj ...
    RAM:73A0                 JSR     print_char
    RAM:73A3                 BCC     depak
    RAM:73A5                 RTS
    RAM:73A5 ; End of function depak_message
    RAM:73A5
    RAM:73A6
    RAM:73A6 ; =============== S U B R O U T I N E =======================================
    RAM:73A6
    RAM:73A6
    RAM:73A6 cr_lf:                                  ; CODE XREF: print_char:cc_enterp
    RAM:73A6                 PHA
    RAM:73A7                 LDA     print_shift
    RAM:73A9                 CLC
    RAM:73AA                 ADC     print_adr
    RAM:73AC                 CMP     #$71 ; 'q'
    RAM:73AE                 BCS     not_line0
    RAM:73B0                 LDA     #$71 ; 'q'
    RAM:73B2                 JMP     set_line_adr
    RAM:73B5 ; ---------------------------------------------------------------------------
    RAM:73B5
    RAM:73B5 not_line0:                              ; CODE XREF: cr_lf+8j
    RAM:73B5                 CMP     #$99 ; 'Щ'
    RAM:73B7                 BCS     not_line1
    RAM:73B9                 LDA     #$99 ; 'Щ'
    RAM:73BB                 JMP     set_line_adr
    RAM:73BE ; ---------------------------------------------------------------------------
    RAM:73BE
    RAM:73BE not_line1:                              ; CODE XREF: cr_lf+11j
    RAM:73BE                 LDA     #$C1 ; '+'
    RAM:73C0
    RAM:73C0 set_line_adr:                           ; CODE XREF: cr_lf+Cj
    RAM:73C0                                         ; cr_lf+15j
    RAM:73C0                 STA     print_adr
    RAM:73C2                 PLA
    RAM:73C3                 LDY     #0
    RAM:73C5                 STY     print_shift
    RAM:73C7                 RTS
    RAM:73C7 ; End of function cr_lf
    RAM:73C7
    RAM:73C8
    RAM:73C8 ; =============== S U B R O U T I N E =======================================
    RAM:73C8
    RAM:73C8
    RAM:73C8 print_char:                             ; CODE XREF: sub_733D+5p
    RAM:73C8                                         ; depak_message:char_decrunchedp
    RAM:73C8                 CMP     #$FF
    RAM:73CA                 BEQ     cc_endprint
    RAM:73CC                 STY     temp_Y
    RAM:73CE                 CMP     #$D
    RAM:73D0                 BNE     not_cc_enter
    RAM:73D2                 LDA     inverse_flag
    RAM:73D4                 BEQ     cc_enter
    RAM:73D6                 LDA     #$D
    RAM:73D8                 JMP     not_cc_enter
    RAM:73DB ; ---------------------------------------------------------------------------
    RAM:73DB
    RAM:73DB cc_enter:                               ; CODE XREF: print_char+Cj
    RAM:73DB                 JSR     cr_lf
    RAM:73DE                 JMP     next_char
    RAM:73E1 ; ---------------------------------------------------------------------------
    RAM:73E1
    RAM:73E1 not_cc_enter:                           ; CODE XREF: print_char+8j
    RAM:73E1                                         ; print_char+10j
    RAM:73E1                 LDY     inverse_flag
    RAM:73E3                 BEQ     not_inverted
    RAM:73E5                 ORA     #$80 ; 'А'
    RAM:73E7
    RAM:73E7 not_inverted:                           ; CODE XREF: print_char+1Bj
    RAM:73E7                 LDY     print_shift
    RAM:73E9                 STA     (print_adr),Y
    RAM:73EB                 INC     print_shift
    RAM:73ED
    RAM:73ED next_char:                              ; CODE XREF: print_char+16j
    RAM:73ED                 LDY     temp_Y
    RAM:73EF                 CLC
    RAM:73F0                 RTS
    RAM:73F1 ; ---------------------------------------------------------------------------
    RAM:73F1
    RAM:73F1 cc_endprint:                            ; CODE XREF: print_char+2j
    RAM:73F1                 JSR     sub_73F6
    RAM:73F4                 SEC
    RAM:73F5                 RTS
    RAM:73F5 ; End of function print_char
    RAM:73F5
    RAM:73F6
    RAM:73F6 ; =============== S U B R O U T I N E =======================================
    RAM:73F6
    RAM:73F6
    RAM:73F6 sub_73F6:                               ; CODE XREF: sub_733D+Dp
    RAM:73F6                                         ; print_char:cc_endprintp
    RAM:73F6                 LDA     print_adr
    RAM:73F8                 CLC
    RAM:73F9                 ADC     print_shift
    RAM:73FB                 SEC
    RAM:73FC                 SBC     #72
    RAM:73FE                 STA     byte_7292
    RAM:7401                 RTS
    RAM:7401 ; End of function sub_73F6
    RAM:7401
    RAM:7402
    RAM:7402 ; =============== S U B R O U T I N E =======================================
    RAM:7402
    RAM:7402
    RAM:7402 init_depak:                             ; CODE XREF: dep_blocktxt+Ep
    RAM:7402                 LDY     #8
    RAM:7404                 STY     curr_in_ctr
    RAM:7406                 LDA     block_text
    RAM:7408                 LDX     block_text+1
    RAM:740A                 SEC
    RAM:740B                 SBC     #8
    RAM:740D                 STA     in_ptr
    RAM:740F                 BCS     loc_7412
    RAM:7411                 DEX
    RAM:7412
    RAM:7412 loc_7412:                               ; CODE XREF: init_depak+Dj
    RAM:7412                 STX     in_ptr+1
    RAM:7414                 LDA     (in_ptr),Y
    RAM:7416                 STA     cur_in_bs
    RAM:7418                 LDA     #5
    RAM:741A                 STA     cur_char_ctr
    RAM:741C                 LDA     #3
    RAM:741E                 STA     byte_75
    RAM:7420                 RTS
    RAM:7420 ; End of function init_depak
    RAM:7420
    RAM:7421
    RAM:7421 ; =============== S U B R O U T I N E =======================================
    RAM:7421
    RAM:7421
    RAM:7421 pick_char:                              ; CODE XREF: depak_message:depakp
    RAM:7421                                         ; depak_message:use_second_charsetp
    RAM:7421                 LDY     curr_in_ctr
    RAM:7423                 LDX     cur_char_ctr
    RAM:7425                 LDA     #0
    RAM:7427
    RAM:7427 pick_bits:                              ; CODE XREF: pick_char+Dj
    RAM:7427                 ROL     cur_in_bs
    RAM:7429                 ROL     A
    RAM:742A                 DEY
    RAM:742B                 BEQ     pick_next_bs
    RAM:742D
    RAM:742D cont_bs_strip:                          ; CODE XREF: pick_char+26j
    RAM:742D                 DEX
    RAM:742E                 BNE     pick_bits
    RAM:7430                 STY     curr_in_ctr
    RAM:7432                 RTS
    RAM:7433 ; ---------------------------------------------------------------------------
    RAM:7433
    RAM:7433 pick_next_bs:                           ; CODE XREF: pick_char+Aj
    RAM:7433                 LDY     #8
    RAM:7435                 STY     curr_in_ctr
    RAM:7437                 INC     in_ptr
    RAM:7439                 BNE     loc_743D
    RAM:743B                 INC     in_ptr+1
    RAM:743D
    RAM:743D loc_743D:                               ; CODE XREF: pick_char+18j
    RAM:743D                 PHA
    RAM:743E                 LDA     (in_ptr),Y
    RAM:7440                 CMP     #$FF
    RAM:7442                 BEQ     end_pattern
    RAM:7444                 STA     cur_in_bs
    RAM:7446                 PLA
    RAM:7447                 JMP     cont_bs_strip
    RAM:744A ; ---------------------------------------------------------------------------
    RAM:744A
    RAM:744A end_pattern:                            ; CODE XREF: pick_char+21j
    RAM:744A                 PLA
    RAM:744B                 LDA     #$FF
    RAM:744D                 RTS
    С уважением,
    Jerri / Red Triangle.

  8. #7

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,294
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,458
    Поблагодарили
    948 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    но я так понял там некий интерпретатор
    ага, в нём ещё сделана игрушка "Below the Root"

  9. #8

    Регистрация
    16.11.2015
    Адрес
    г. Москва
    Сообщений
    234
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    из очередного байта добираются 5 бит
    В Apple такой способ используется еще в Мониторе - там мнемоники команд для встроенного дизассемблера так хранятся.

    Цитата Сообщение от jerri Посмотреть сообщение
    у них 40 символов
    как они кодируют еще 8?
    Считайте, что 16-битное слово - это трехзначное число в 40-ринчой системе счисления. То есть берете первый символ (от 0 до 39), потом второй символ и умножаете его на 40, потом третий символ и умножаете его на 1600. Потом все складываете. Получается 3 символа в слове.
    Чтобы распаковать - действуете в обратную сторону, то есть берете по модулю 40 - получаете первый символ, делите на 40 - получаете второй, делите на 1600 - получаете третий.

    Этот пользователь поблагодарил avivanov76 за это полезное сообщение:

    jerri(18.10.2019)

  10. #9

    Регистрация
    12.02.2008
    Адрес
    S-Posad
    Сообщений
    472
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    35 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    vice как самый удобный эмуль с64
    А вот как с помощью этого замечательного эмулятора посмотреть какой трек\сектор сейчас читается?

    Вот конкретно про второй (вторая сторона) диск Алисы: хотелось бы понять что именно читается на нем до момента старта игры.
    Т.е. хотя бы просто откуда читает, уж про то куда складывает мечтать не приходится.

    В правом нижнем углу эмулятора вроде бы выводится такая инфа, но углядеть читаемый сектор (а там явно кусками а не полностью дорожками)
    не представляется возможным, даже если уменьшить скорость эмуляции до 1 процента.

    Кроме того, лампочка горит почти всегда и понять читается ли что-то или просто едет голова в другое место - не понять.
    Последний раз редактировалось GARNIZON; 15.10.2019 в 02:19.

  11. #10

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    GARNIZON, дисковод на С64 это особая песня. чаще всего грузится все методом доступа к файлам
    посмотри есть ли файлы на втором диске.
    С уважением,
    Jerri / Red Triangle.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Конвертер из Tasm и Alasm в текст
    от Raider в разделе Программирование
    Ответов: 11
    Последнее: 24.11.2024, 12:09
  2. Ответов: 12
    Последнее: 09.06.2018, 08:22
  3. Пишем текст на ПЦ формат 42 ZX как???
    от Mad Killer/PG в разделе Утилиты
    Ответов: 18
    Последнее: 15.07.2011, 22:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •