Форум за любителите на Стара електроника

Персонални компютри, игрови приставки и друга стара електроника за забавление => Ремонт, схеми, документация, литература => Темата е започната от: dartdart26 в 14 Ноември, 2016, 23:16:11

Титла: Помощ при подкарване на Правец 8М и 82
Публикувано от: dartdart26 в 14 Ноември, 2016, 23:16:11
Здравейте,

След доста години (над 15) си взех личния Правец 82 (беше при роднини за детето им) и се сдобих с още един Правец 8М . И двата не работят и физически нямат големи повреди.

Правец 82:
 - счупени крачета (по едно) на 2 от ROM-те
 - счупено краче на поне един РАМ чип

В момента нямам възможност за снимки на Правец 82, ще ги добавя. Изходът на екрана представлява 4 или 5 вертиканли линии.

Относно Правец 8М:
 - не мога да видя физически проблеми по дъното:
[attach=2]
 - има само един ROM чип, имаше тема по форума за да разбера дали трябва да е с един само или повече
 
При пускането му се вижда следната картина:
[attach=1]

Целта ми е да ползвам C/C++ компилатор за писане на софтуер, както прави този пич:
/>
Много съм се вманиачил в идеята за x86-to-6502 компилатора му и искам да го изпробвам на Правец. Мога да го правя с емулатор, но не е същото...
В тази връзка ми се иска да подкарам 6502 частта на 8M.

Програмист съм, но нямам познания в електрическата част. Бихте ли ми помогнали с насоки - как да се опитам да ги подкарам, има ли някой човек, който би ги погледнал?

Благодаря!
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: FAMICOM_87 в 15 Ноември, 2016, 15:10:05
звучи яко това дето искаш да го правиш :)
от х86 към 6502. А обратното сигурно е пак толкова сложно а? :)
Винаги съм се дивик какви красиви игри имат 8 битовите конзоли и колко зле са портнати на първите IBM х86 платформи  :blum1:
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: Gabo в 15 Ноември, 2016, 17:38:30
както винаги,  ще започна с отговора на другите като теб:
1. Използвай търсачката!!!
примерни теми в нашият форум:
Паралелно възстановяване на Правец 16 и Правец 8М (http://www.sandacite.com/forum/index.php?topic=3041.msg60306#msg60306)
Въпроси относно съживяване на Правец 8М (http://www.sandacite.com/forum/index.php?topic=7269.0)
и т.н.т.
и ако пак нищо не стане, пиши.
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: judje79 в 15 Ноември, 2016, 19:11:13
Добър вечер,

За 8М сега погледнах, ако всичко е както ти е снимката липсват ти два ЕПрома на тях пише : F0 D8
тип m2764A на самото дъно има номерация  DF1 и DF3

Лека вечер
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: nova600 в 15 Ноември, 2016, 20:32:05
Както е написал колегата в горния ппост, чиповете може да са два - 2764, но може да е един - 27128. Над DF1 има джъмпер EJ с две позиции - мост между 1-2 и мост между 2-3 погледнато от ляво на дясно. При мост между 1-2 се ползват два чипа 2764, при мост между 2-3 се ползва един чип 27128, който се монтира на цокъл DF1. На мойта платка няма монтиран джъмпер физически, проосто е направен мост с проводник.
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: nova600 в 18 Ноември, 2016, 08:20:03
Какво направи с компютрите? Не писа нищо повече. Ако идеята е още жива мога да погледна платките. Ще ми трябват само дъната без захранване, клавиатура и т.н. Ако решиш пиши тук.
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: dartdart26 в 18 Ноември, 2016, 10:41:18
Какво направи с компютрите? Не писа нищо повече. Ако идеята е още жива мога да погледна платките. Ще ми трябват само дъната без захранване, клавиатура и т.н. Ако решиш пиши тук.

Здравей,

Междувременно се сдобих и с един 8С, същите симптоми като 8М (няма видими поражения). Може би един от РАМ чиповете не е напълно наред (крачетата не са напълно прави).

Иначе - не ми остана време тази седмица, надявам се уикенда да мога. Не съм се отказал, даже напротив :)

Благодаря ти за предложението, ще се възползвам :) Ако искаш да се разберем на лично.

Може би и нещо, което забравих да спомена - предлагам заплащане, почерпка, забавни моменти с тази идея горе, по избор на човека :)
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: dartdart26 в 19 Ноември, 2016, 16:40:35
Огромно благодаря на nova600! Рядко се срещат такива хора... Сега имам работещ 8C!

Оказа се проблем с клавиатурата - счупени крачета на конектора.

Сега мога да продължа напред :)

[attach=1]
[attach=2]
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: dartdart26 в 25 Ноември, 2016, 02:33:34
Здравейте,

nova600 е подкарал и личния ми Правец 82 (много съм щастлив), както и има успех с 8M-a . Отново, големи благодарности :)

Остана ми време тази вечер и успях да подкарам C++14 програма на Apple II емулатора :) Като дойде флопито за физическия Правец - ще го пробвам там.

Набързо ще обясня как става. Първо, правя всичко под Ubuntu. Би трябвало да стане и с други компилатори, но това имам под ръка.

Нужен софтуер:
- g++ (sudo apt-get install g++ && sudo apt-get install g++-multilib)
- x86-to-6502 (https://github.com/lefticus/x86-to-6502) - компилира се просто като (cd src; g++ main.cpp -o x86-to-6502)
- 6502 асемблер (sudo apt-get install xa65)
- Apple II/Правец 8 емулатор (https://github.com/AppleWin/AppleWin)
- софтуер за създаване на дискове и файлове (http://a2ciderpress.com/)
- wine (sudo apt-get install wine-stable) - пускам Windows версията на AppleWin емулатора, проблеми с native версията под Linux

Целта ни е да запишем стойността 0x12 в адрес 0x526 . Резултатът е буквичката "R" в горния десен ъгъл на екрана.

C++ програмата, която го прави е (нарочно написана в C++ режим, това е целта на упражнението, да не се сърдят C програмистите :) ):

#include <cstdint>

using mem_addr_t = uint16_t;
using mem_loc_t = volatile uint8_t;

int main()
{
const auto set_mem = [](mem_addr_t addr) -> mem_loc_t& { return *(reinterpret_cast<mem_loc_t*>(addr)); };

set_mem(0x526) = 0x12;
}

Първата стъпка е да компилираме програмата за x86 и да генерираме 6502 асемблер:

g++ -c -O3 -o- -Wall -Wextra -m32 -march=i386 -std=c++1z -S print_r.cpp  | ./src/x86-to-6502 | sed '/^\t\./d'  > print_r.6502

Изходът е print_r.6502 файл с 6502 асемблерен код:

main
lda #18       ; movb $18, 1318
sta 1318      ; movb $18, 1318
lda #$00      ; xorl %eax, %eax
sta $03       ; xorl %eax, %eax
sta $04       ; xorl %eax, %eax
rts           ; ret

Следващата стъпка е да създадем  изпълним файл с 6502 асемблера (разширението на името на файла указва, че е binary тип файл):

xa -C print_r.6502 -o PRINTR#060300

Остава да създадем дискета с DOS 3.3 със CiderPress:
[attach=1]

Записваме изпълнимия файл там:
[attach=2]

И накрая зареждаме от дискетата в Apple II емулатора, пускаме програмата и виждаме, че се появява буквата R горе :) :
[attach=3]

Като остане време ще пробвам и по-сложни неща, както и потенциално може да се направи библиотека от високо ниво за работа с хардуера (примерно библиотека за графика на C++, естествено без exceptions, динамична памет с heap и т.н.)

Ако някой се интересува и му е интересно - ще съдействам както мога.

Благодаря за помощта :)
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: TheHungry в 26 Ноември, 2016, 02:06:44
Въпреки всичко предпочитам така :

LDA #12
STA $526
RTS

Просто и ясно  .
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: iss в 26 Ноември, 2016, 02:41:57
Просто и ясно.
... и 6 байта по-малко   ... и 8 микросекунди по бързо, за това време колко бира се изпива ...  :D

а пък най-добре в монитора: A9 12 8D 26 05 60 - само поглеждаш и разбираш за какво става дума.
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: dartdart26 в 26 Ноември, 2016, 11:08:26
Е, вие пък...  :)

Това е защото е main(), в много голяма част от случаите ще са inline-нати функциите и няма да го има този дефект :)
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: TheHungry в 27 Ноември, 2016, 01:00:29
A9 12 8D 26 05 60

Кратко и ясно ;)
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: dartdart26 в 01 Декември, 2016, 16:12:25
Друго, което обмислям (поради малкия стек от 256 байта на 6502) е следното:

Генерирам C код от C++ (http://llvm.org/releases/3.1/docs/FAQ.html#translatecxx) и след това ползвам native C компилатора за 6502 . Според следната страница си прави собствен стек и лимитацията отпада:  http://wiki.cc65.org/doku.php?id=cc65:parameter_and_return_stacks

Ще пиша какво става като го пробвам.
Титла: Re: Помощ при подкарване на Правец 8М и 82
Публикувано от: iss в 02 Декември, 2016, 09:52:04
Стана ми интересно... :).
Каква е целта на упражнението?
Споменаваш и 'native' компилатор - кой е той? ... или имаш предвид 'cross' компилатор?
Иначе, както се казва 'за статистиката', стека хич не е малък - даже има място в него за драйвер или кратка програма - факт!