Group chat: Arqueologia Digital e Preservação Histórica por meio da Emulação de Dispositivos Eletrônicos - page 3

Sun 2017-11-05, 01:01

Werner Eck:
de q esses 4 valores jogados no &30 possam estar inicializando os 4 modos de dma
Werner Eck:
poderia ser ou o crtc jogando DRQ0~DRQ3 pro dma ou o dma jogando dack0~dack3 pro crtc
Werner Eck:
eu to meio confuso
não... esses valores aí são a inicialização do CRTC

a primeira escrita é em 0x31 (bit A0=1) e o valor é zero, ou seja, trata-se desse comando aí da tabela acima, o comando de reset do CRTC
e os 4 bytes seguintes são escritos em 0x30 (bit A0=0)
então o primeiro byte é 4F = 0100 1111 = S H H H H H H H
então S=0 e H = 4f
Sun 2017-11-05, 01:01

S=0 significa "Normal Rows" (isso provavelmente significa que não há 1 ou mais pixels de espaçamento entre os tiles)
e H=4f significa que temos 0x50 caracteres por linha
veja que soma 1 ao valor
0x50 = 80 caracteres por linha
oras bolas... é um terminal de 80 colunas :-)
veja, inclusive, na tabela acima, que 80 é o maior valor permitido.
e tá lá justamente o nosso 4F na tabela
Werner Eck:
e 4f=79
Werner Eck:
0x4f = 79d
Sun 2017-11-05, 01:01
ele soma 1 sempre
o valor zero significa 1 caractere por coluna e assim por diante. Veja de novo os valores da tabela
o chip interpreta a configuração como (valor+1)
o segundo byte é 0x59 = V V R R R R R R
0x59 = 0101 1001
V = 1 e R = 25
Werner Eck:
vc quer dizer, 1 char por linha?
Werner Eck:
to tentando ler essa parte
ok... vamos olhar para a tabela de novo
caso esse parâmetro tivesse recebido uma escrita do valor 0x00 = 0 0 0 0 0 0 0 0 , isso significaria 1 char por linha (que é bizarro, mas parece que o chip suporta esses casos degenerados)
Sun 2017-11-05, 01:01
isso provavelmente seria um caractere grandão, esticadão na horizontal
pra um único caractere ser desenhado em uma linha inteira
mas o que o firmware do sagitta configura é 4F
que é o valor binário 1 0 0 1 1 1 1, que, apesar de em decimal valer 79, na tabela ele mostra que o chip interpreta como sendo 80 chars por linha
Werner Eck:
e os outros valores, $59, $99, $ee?
ok... vamos pros outros 3 valores
o segundo valor é 0x59 = 0 1 0 1 1 0 0 1
que segundo a tabela corresponde aos valores dos parâmetros V V R R R R R R
V = 1 e R = 25
e o significado desses valores:
Sun 2017-11-05, 01:01

Werner Eck:
são esses parametros V e R q eu não estou achando
Werner Eck:
é q vc deve estar com esse pdf em várias abas
R = rows / frame
tá na parte debaixo da página 17 (que é identificada como página 8-239)
Werner Eck:
acabei de me dar conta de q tá td ali na msm pag, eu q comi bola
Werner Eck:
Eu quero pensar q essa parte de inicialização do CRTC esteja funcionando
yep
parece tudo perfeito
por que esse valor R = 25 é o que nos diz que a tela tem 25 linhas
Sun 2017-11-05, 02:02
ou seja é um terminal em resolução 80x25
resolução bem típica
Werner Eck:
uma coisa q me chamou a atenção é esse parametro M
Werner Eck:
parece ser um offset para o contador de linhas. Mas pensando melhor, acho q nao tem nada a ver com nada
Werner Eck:
entao, voltamos ao estado de...
Werner Eck:
parece q a inicialização do CRTC se dá ali mesmo
Werner Eck:
talvez então, ele não esteja lendo a área certa?
Werner Eck:
ou os caracteres lidos não estejam sendo escritos na área de VRAM q o CRTC espera? Mas se isso está codificado na EPROM, então é lá mesmo q tem q ser
Werner Eck:
será q estamos setando o CRTC para o range de endereçamento de VRAM certo?
eu acho que a transferência DMA não está acontecendo
Sun 2017-11-05, 02:02
por que o emulador não está interligando corretamente os sinais entre o DMAC e o CRTC
e o efeito colateral é que o CRTC é inicializado, mas sua memória interna tem um buffer todo cheio de zeros
e ele nunca consegue efetuar uma leitura via DMA
e portanto a gente continua vendo o caractere número zero na tela inteira
acho que o ponto agora é estudar o mecanismo de requisição e acknowledge de transferência DMA
o endereço inicial e final também devem estar sendo configurados corretamente, pois já mapeei o DMAC nas portas 44 e 45 que é onde o firmware escreve 8000 e 8fff que é a faixa de endereços da VRAM
acho que já matamos a xarada do mapeamento em I/O e o nó está agora na emulação da interconexão dos 2 chips.
tem um outro carinha na jogada que é o Intel 8212
tem um desses na placa e o datasheet do DMAC diz que ele é projetado pra trabalhar junto com um 8212
Werner Eck:
ele existe no sagitta?
Sun 2017-11-05, 02:02
sim
Werner Eck:
eu tava vendo isso no ds do crt
Werner Eck:
veja na pg 2-112
Werner Eck:
e depois pg 2-111, fig 8
Werner Eck:
e o 8212 é um latch de 8 bits
Werner Eck:
se vc disse q tem ele na placa, teria q emular o bicho tbm
Werner Eck:
ele deve estar entre o barramento de dados e o crtc
A configuração do DMAController é meio confusa no MAME. Olha um exemplo de um driver de outro computador que usa esse chip. Olha como ficam as macros:

Tenho que entender melhor a função de cada sinal
Sun 2017-11-05, 02:02
pra não ficar perdido
não adianta chutar. O importante é entender o que está acontecendo :-)
Vou dormir. Amanhã eu devo continuar nessa pesquisa
em última instância, dá pra ir lá na USP com um multímetro e verificar quais são as interligações que foram feitas entre os chips
boa noite!
Werner Eck:
boa noite!
uma observação, entretanto...
apesar de vermos os endereços de I/O 44 e 45 sendo usados, o chip DMAC provavelmente está mapeado nas portas de 0x40 até 0x48

e o acesso a 44 e 45 é a configuração do canal número 2
Sun 2017-11-05, 02:02
e, de fato tem uma escrita que o firmware faz no endereço 0x48
eu tava comendo bola
vou mapear nesse range, por que assim a escrita em 0x48 vai setar o modo de operação da DMA
caramba... acho que é isso
Werner Eck:
quer tentar?
estou tentando

olha a escrita em 0x48 alí
tá escrevendo o valor 0xC4
vamos ver o que é esse valor ?
Sun 2017-11-05, 02:02

Werner Eck:
acabei de chegar nisso
o valor 4 do número 0xC4 são aqueles 4 bits baixos de enable dos canais
4 = 0 1 0 0
ou seja, todos os canais estão desabilitados
exceto o canal número 2
Werner Eck:
c4=11000100
isso é a prova de que o sinal de DMA Request que o chip CRTC precisa enviar para o DMAC é por meio do canal 2.
É por isso que eu estou mantendo essa linha assim:
Sun 2017-11-05, 02:02
MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257" , i8257_device , dreq2_w))
Werner Eck:
dreq2
Werner Eck:
write
dreq2_w é o método do emulador do DMAC que vocÊ precisa chamar para sinalizar uma requisição de DMA para o canal #2
Werner Eck:
entendi
Werner Eck:
imaginei q seria isso
veja que essa macro configura que o DRQ emitido pelo CRTC chama um callback que sinaliza um dma request no canal 2 do DMAC
levou um tempinho até eu entender essa sintaxe
Werner Eck:
agora sabemos q ele está setando o modo dma no canal 2, para isso o CRTC precisa requisitar nesse canal
sim
Sun 2017-11-05, 03:03
não tá funcionando ainda, mas foi bom eu ter tido essa sacada
se eu continuasse mapeando em 44 e 45 apenas, jamais iria funcionar
precisa mapear no intervalo todo, pra que o firmware consiga configurar o chip de DMA
na porta 48
Werner Eck:
vdd
Werner Eck:
bom, eu realmente preciso descansar
Werner Eck:
já to vendo névoa na minha frente
Werner Eck:
boa noite, vou nessa.
tem uns outros bandidos que são as portas 0x21, 0x00 e 0x50
o firmware acessa esses outros endereços logo no começo
Sun 2017-11-05, 03:03
então aí tem coisa também
talvez seja o setup do chip de RS232
Werner Eck:
amanhã podemos ver isso
beleza
Werner Eck:
👍
eu posso também em algum momento dar um commit e subir pro meu github esse código atual do driver pela metade
boa noite
e happy hacking!
BOOOM !!!!

Sun 2017-11-05, 03:03
https://github.com/mamedev/mame/pull/2776
new non-working driver: Scopus Sagitta 150/180 serial terminal by felipesanches · Pull Request #2776 · mamedev/mame

mame - MAME
Agora sim! Agora posso ir dormir :-)
http://www.linusakesson.net/programming/tty/
Werner Eck:
Eae maluco?!!
Werner Eck:
Fala, o q era?
hehe
burocracias do MAME
Werner Eck:
jura??
Werner Eck:
to olhando lá o seu commit
tinha faltado eu implementar explicitamente o mecanismo de leitura de memória
Sun 2017-11-05, 11:11
Werner Eck:
putaqueospa
pra ser sincero... eu não entendi direito tudo ainda
Werner Eck:
não era nada técnico no final das contas
mais ou menos...
Werner Eck:
me fala, os endereços dos registradores de dma e do crtc estavam certos no fim?
sim
agora o próximo passo é fazer a serial funcionar
Werner Eck:
tem q emular o uart
suspeito que o controlador de porta serial esteja mapeado no endereço 0x21
já instanciei o módulo de emulação de UART
Sun 2017-11-05, 11:11
Werner Eck:
se já tiver ele no MAME, meio caminho andado...
falta configurar
sim, já tem
essas coisas são muito comuns
o MAME é extremamente modular e certamente algum outro driver já usou esses chips todos
Werner Eck:
daí é pegar no ds pra saber como é a inicialização né? E comparar padrões na EPROM pra encontrar isso
é
é por aí
Werner Eck:
vc já desconfia de onde tenha isso na EPROM?
Werner Eck:
de tanto olhar
Sun 2017-11-05, 11:11
estou suspeitando desse código aqui:

portas 0x21 e 0x00
Werner Eck:
parece ser bem semelhante ao dma... ele joga 3 valores na $21
Werner Eck:
deve estar setando alguns modos
Werner Eck:
é o q lembra, daquilo q vimos ontem. Qual o código do chip SPI?
Werner Eck:
8251?
Werner Eck:
Isso aqui é interessante ter como referencia: https://en.wikichip.org/wiki/intel/mcs-80
MCS-80 - Intel

The MCS-80 (Micro Computer Set-80) was a family of 8-bit microprocessor chipsets developed by Intel. Introduced on April, 1974, the MCS-80 featured the 8080 CPU, the forefather of all modern x86-based microprocessors.
Werner Eck:
cara, ontem eu vi isso aqui, achei deveras interessante só q acabei não postando: https://www.ebay.com/itm/Cray-2-Memory-Board-w-Lucite-Certificate-1985-SuperComputer-Module/111930874500?_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D20160727114228%26meid%3Dd5e5bcf895b443499abcbe358a3a491e%26pid%3D100290%26rk%3D3%26rkt%3D4%26sd%3D202076573924&_trksid=p2060778.c100290.m3507
Cray-2 Memory Board w/ Lucite & Certificate, ~1985 SuperComputer Module

Cray-2 Supercomputer Memory Board. Rare piece of history. Actually, a "Bit" of technology using SRAM Integrated Chips. Date: 1985 A.D. Serial numbers and date of signature on the Certificate of Authenticity. | eBay!
Forwarded message from Fractal:


Sun 2017-11-05, 12:12
Forwarded message from Fractal:


Werner Eck:


Werner Eck:


Werner Eck:


Werner Eck:


Werner Eck:
Se o 8251 for mapeado em $21, então a primeira palavra seta o modo assíncrono: 0x7A=01 11 10 10: 1 stop bit; paridade: habilitada, par; compr. palavra: 7 bits; fator baud rate: 16x
Werner Eck:
O q segue deve ser a instrução de comando seguida de dados. To lendo essa parte para entender
acho q é mapeado em 0x20 e 0x21
Werner Eck:
dois endereços?
sim
Sun 2017-11-05, 13:01
um pra dados e outro pra comandos
é um setup comum de vários dispositivos
usar o bit de endereço zero para diferenciar entre duas portas
Werner Eck:
isso é padrão do MAME?
não
isso é padrão de design de hardware
Werner Eck:
q estranho... não me soa familiar isso\
Werner Eck:
Se quero endereçar um periférico, uso um endereço, no qual ele está mapeado...
muitos periféricos usam multiplos endereços
é comum isso
Sun 2017-11-05, 13:01
Werner Eck:
bom. vc acha q faz algum sentido o q eu falei aí atrás?
acho que faz um pouco
mas não acho que seja na porta 21
acho que ele está mapeando dados na 20 e comandos na 21
Werner Eck:
é q eu estava baseando a minha análise nisso q vc falou
Werner Eck:


Werner Eck:
só vejo ele escrever no $21 nesse snippet. E le alguma coisa do $00
talvez não haja escrita de dados nessa parte do programa, mas haja em outro trecho
Werner Eck:
depois faz uns rotate right
Werner Eck:
entendi
Sun 2017-11-05, 13:01
Werner Eck:
bom, vou deixar pra qdo vc chegar nessa parte. Aí vc já tem condição de ver os mnemônicos./
putz! acho que esse 0x00 pode ser o dipswitch !
Werner Eck:
ummm.
Werner Eck:
teria q ter os dispositivos mapeados
Werner Eck:
pra saber em qual endereço de memória está cada um deles
Werner Eck:
ele le o $00 e depois faz um AND com o q tem no acc
Werner Eck:
minto; ele lê o $00 e depois faz um and com o q tiver no $03 e o acc
Werner Eck:
na prática, entendo q ele joga o q tem no $00 no acc, depois faz um AND com esse valor e $03
isso
ele tá tomando decisão em função dos 2 bits menos significativos lidos da porta 0x00
Sun 2017-11-05, 13:01
Werner Eck:
beleza; só falta entender o contexto disso
que eu acho que é de onde ele lê a configuração dos dipswiches
Werner Eck:
pode ser sim. Um jeito comum de se deixar a parte de configuração (stop bit, paridade, palavra, etc) da interface configurável pelo usuário
Werner Eck:
se é q isso é a parte do 8251
Werner Eck:
não temos certeza ainda
Werner Eck:
pode ser outra coisa
aqueles 2 bits lidos do endereço 0x00 definem qual valor é escrito na porta 0x21

0x7A, 0x4E ou 0x5A
Werner Eck:
ummmm... tá fazendo mais sentido hein??
Sun 2017-11-05, 13:01
supondo que a porta 0x20 é para dados e a 0x21 é para comandos, acho que a gente pode tentar interpretar esses 3 valores conforme o datasheet descreve a estrutura dos comandos
Werner Eck:
o modo
pra ver quais são as opções
e se fizer sentido, a gente documenta já no driver
Werner Eck:
pode ser sincrono ou assincrono. E o terceiro byte pode ser o comando
Werner Eck:
perae q eu preciso forrar o estomago. Senao caio duro aqui
olha só como se faz pra implementar um dip switch no MAME:

Werner Eck:
ummm
Werner Eck:
isso vc tirou de um driver já implementado?
Sun 2017-11-05, 13:01
Werner Eck:
ou vc escreveu isso agora?
Werner Eck:
🍛
Werner Eck:
Eu suponho q o q tem nas linhas 0x3A/0x3E/0x42 não está sendo executado antes da instrução da linha 0x46?
Werner Eck:
talvez esse bloco q vc me passou seja parte de um desvio condicional?
Werner Eck:
a lógica estando mais concentrada nas linhas 0x57 e 0x5c?
Werner Eck:
(q eu não tenho)
segue então uma imagem mais completa do código pra dar mais contexto:

Esse código aí eu escrevi com base nas observações e conclusões que descrevi ontem/hoje aqui
É claro que o tempo todo eu olho pra código de outros drivers para aprender como se faz e para escrever de forma similar.
Sun 2017-11-05, 16:04
Werner Eck:
poutz... desculpa parecer chato, mas esse ps aí é ilegível... 😔
clica na imagem pra ver maior
Werner Eck:
então....
Werner Eck:
eu até abri numa janela do browser, mas fica minúsculo mesmo assim. Dando zoom fica pixelado
eita!
vamos focar mais então:

são 5 operações de escrita na porta $21
os bytes são escritos nessa sequencia: 7A, 37, 40, X, 37
onde X é um de 3 valores possíveis (escolhidos em função dos bits lidos da porta $00 - dispwitch?): 7a, 4e ou 5a
Sun 2017-11-05, 16:04
vou agora olhar pro datasheet do chip de UART pra ver o que esses comandos significam
http://pdf.datasheetcatalog.com/datasheet/Intel/mXtyswx.pdf
8251A Datasheet pdf - PROGRAMMABLE COMMUNICATION INTERFACE - Intel

8251A datasheet, 8251A pdf, 8251A data sheet, datasheet, data sheet, pdf, Intel, PROGRAMMABLE COMMUNICATION INTERFACE
Werner Eck:
ah, então o 7A/37/40 são escritos sequencialmente na porta, só os 7a/4e/5a é q são selecionáveis nas dips?
isso!
Werner Eck:
na verdade, só os dois últimos...
Werner Eck:
perceba como o 7a se repete
Werner Eck:
é o modo
Werner Eck:
tenho certeza disso...
Werner Eck:
o 7a é sempre escrito
o primeiro byte é 74
Sun 2017-11-05, 16:04
Werner Eck:
onde vc viu isso?
ah nao
é 7a mesmo
mal...
Werner Eck:
então...
então... reiterando: os bytes são escritos nessa sequencia: 7A, 37, 40, X, 37 (com X = 7a, 4e ou 5a)
Werner Eck:
mas eu não vejo nenhuma instrução de branch direcionando para a linha 0x52.
Werner Eck:
só para as linhas 0x57 e 0x5c
Werner Eck:
caso ele não faça jump para essas linhas, ele executa a 52
Werner Eck:
correto?
Sun 2017-11-05, 16:04
Werner Eck:
aaah
Werner Eck:
aaaaaaaah
Werner Eck:
é isso. Ele le as dips, se der algum setting lá ele executa o branch correspondente
Werner Eck:
se não der nada (0x00) então ele faz 0x7A e sai fora
Werner Eck:
e aí escreve 0x37 e na sequencia, lê da porta 0x50 - isso independente do q ele decidiu escrever anteriormente.
exato
a ultima escrita acontece em todos os casos
por que todas as condições pulam pra lá
então apenas o quarto byte é condicional
Werner Eck:
e vc já decodificou os parametros q ele seta nos valores 4e e 5a?
Sun 2017-11-05, 16:04
ainda não
estou vendo isso agora.
isso aqui é importante:

Werner Eck:
isso q eu tinha postado
ou seja, o primeiro byte, $7A, é com certeza uma "mode instruction"
o outro 7A talvez seja uma "command instruction" e aí pode ter uma interpretação diferente, apesar de ser o mesmo valor numérico
Werner Eck:
7A seria isso
Werner Eck:
não 74...
Werner Eck:
figuras 8 e 10
Sun 2017-11-05, 16:04
meu cérebro dá nó nesses números... editei as mensagens anteriores para ficarem com o número certo
sim, vc tem razão é 7A
Werner Eck:
o q vc disse vai de encontro ao q eu falei tbm
Werner Eck:
e tá bem aí nessa seção q vc está lendo, uma ou duas páginas adiante
Werner Eck:
os detalhes de cada bit dependendo de como vc quer setar o modo
perfeito
acho que sua análise está perfeita
Werner Eck:
eu to devagar, pegando novamente o jeito
Werner Eck:
nunca escrevi assembler do mcs-80
(eu tirei umas duas horas de cochilo durante a tarde hoje e já não lembrava mais de nada :-D)
Sun 2017-11-05, 17:05
Werner Eck:
mas escrevi do z-80
Werner Eck:
e isso já faz 23 anos... rs
(não lembrava mais dos comentários que você tinha feito mais cedo hoje à uma da tarde)
Werner Eck:
não esquenta Juca
Werner Eck:
Tamo junto nesse projeto
claro
Werner Eck:
(na medida em q eu ajudar mais e atrapalhar menos)
é que eu vi que eu to explicando o que você já explicou hahahahah
Werner Eck:
😆
sabe aquele lance que eu te falei sobre tipicamente ser usado o bit A0 do barramento de endereços para chavear entre duas portas de I/O dos periféricos ? Por exemplo portas 0x20 para dados e 0x21 para comandos
Sun 2017-11-05, 17:05
Na prática é implementado usando esse sinal C ou /D:

o sinal A0 da CPU é ligado a esse seletor Control/Data
Vou sair agora e volto daqui 1 hora. Té mais
mas fica uma observação:
acho que só deve ter sobrado a porta de I/O 0x50 sendo manipulada pelo firmware
e não sei ainda o que ela é
então suspeito que possa ser relacionada à leitura do teclado talvez. Alguém tem que fazer isso em algum momento. Só não sei se é tão cedo no setup ou se ós vai ser feita a varredura do teclado mais pra frente
té mais
Werner Eck:
👍
Sun 2017-11-05, 17:05
Werner Eck:
Eu imagino q o teclado seja constantemente lido
Werner Eck:
Daí, se ele estiver mapeado no &0x50, provavelmente ele deve aparecer em algum momento dentro de um loop.
pode ser lido em rotina de interrupção também
Werner Eck:
ISR, sim...
Werner Eck:
bem lembrado
Werner Eck:
daí é só ver nos endereços específicos q o processador olha...
eu mapeei o chip I8251 nas portas 0x20 e 0x21 e declarei que o hardware possui uma porta serial e que os sinais da porta estão ligados ao chip 8251:

E aquela linha MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr) significa que é uma porta onde os dispositivos seriais típicos podem ser ligados ( default_rs232_devices é uma lista de periféricos seriais) e que por padrão o driver é inicializado sem nenhum periférico conectado nesa porta (por isso o nullptr ali)
com isso, aparece no menu interno da interface do MAME uma opção para configurar a porta serial:
Sun 2017-11-05, 18:06

No submetu "Slot Devices" tem rs232

e veja que está inicialmente sem nenhum periférico instalado na porta
mas posso selecionar algumas opções como "printer", "null_modem", "pty", "keyboard", "loopback", "terminal"
Werner Eck:
Seria como dizer, o terminal seria inicializado por padrão sem nenhum periférico plugado na interface serial
dessas, a opãço "pty" é interessante pois supostamente permitiria criar um par mestre/escravo de pseudo terminais do unix
Werner Eck:
E vc seleciona um periférico pelo MAME
e com isso talvez seja possível eu configurar meu sistema hospedeito (GNU+Linux) para abrir uma sessão de login no terminal emulado e forma similar ao que acontece com programas emuladores de terminal vt-100 como o xterm ou o gnome-terminal
Werner Eck:
Existe dentro dessas opções, alguma q permita mapear a própria serial do host rodando MAME como periférico virtual?
Sun 2017-11-05, 18:06
Werner Eck:
daí permitindo conectar um dispositivo real via serial ao emulador?
hmmm... isso seria interessante também
mas o que eu tenho em mente é fazer tudo virtual: processos do meu GNU+Linux vinculados a um pseudo-terminal criado pelo MAME com a interface rs232 emulada do terminal da scopus
Werner Eck:
E essa nossa implementação da rs232 está pronta?
Werner Eck:
digo, no terminal Sagitta
eu não sei como se configura um pseudo-terminal para abrir uma sessão de login no GNU+Linux, etão esse caminho via pty eu vou deixar pra investigar depois.
antes disso, testei outra coisa:

essa opção instancia um terminal serial genérico e liga ele na porta do sagitta emulado
Werner Eck:
e na outra ponta o q vc obtém?
Sun 2017-11-05, 18:06
ao resetar, aparece isso aqui:

veja que a metade da janela do lado esquerdo é a tela de um terminal genérico
e o lado direito é a tela do sagitta emulado
Werner Eck:
ah ta.
Werner Eck:
certo
aí supostamente eu poderia digitar em um e ver os caracteres aparecendo no outro
Werner Eck:
(tá borrado, mas dá pra ver esquerda vs direita)
Werner Eck:
supostamente ou realmente? rss
quando eu digito não acontece nada
Sun 2017-11-05, 18:06
mas o MAME tem um submenu para configuração do terminal genérico
veja aqui:
Werner Eck:
vc implementou as dips?

declarei os dipswitches com valor default 0 nos dois bits
Werner Eck:
cara eu acho q tem q ser 7 data bits, parity enabled, 1bit
Werner Eck:
por causa daquele byte 0x7a
Werner Eck:
suponho q ele esteja default nisso
então eu liguei o Local echo e pelo menos o terminal genérico mostra o que eu to digitando nele
e agora preciso fazer isso que você tá falando mesmo: configurar o terminal genérico com os mesmos ajustes do terminal sagitta emulado pra ver se a emulação está funcionando
Sun 2017-11-05, 18:06
Werner Eck:
quanto à taxa de transmissão, estou incerto, pois no DS do chip ele explica q fica setado em "16x"
Werner Eck:
vai lá
Werner Eck:
vc provavelmente tbm terá q experimentar com diversos baud rates diferentes.
Werner Eck:
eu começaria pelo mais baixo... afinal, eram os anos 70.
eu acho que o caminho é interpretar todos os bytes de setup que o firmware escreve na porta 0x21 e assim ter a certeza de qual é o ajuste que o firmware faz, portanto restringindo a quantidade de chutes necessários. Teoricamente não deveria ser necessário chutar nada.
Werner Eck:
vamos lá
Werner Eck:
deixa eu ver aqui
os bytes são escritos nessa sequencia: 7A, 37, 40, X, 37 (com X = 7a, 4e ou 5a)
Werner Eck:
isso
Werner Eck:
acho q de cara o 37 é invalido para mode... começa escrevendo 2 zeros
Sun 2017-11-05, 18:06
Werner Eck:
corrigindo, pode ser q esteja setando para modo sincrono
Werner Eck:
deixa ler aqui
estou lendo também
volto daqui a pouco
Não é exatamente a técnica usada aqui, mas parece que algo similar está acontecendo:

então no nosso caso temos mode:7a command:37 seguido de comand:40(RESET) e mode:X command:37
Werner Eck:
que parece ser o q o byte 0x40 faz
Werner Eck:
hahaha
Werner Eck:
para de ler pensamento cara
Sun 2017-11-05, 19:07
hehe
Werner Eck:
eu acabei de decodificar ele
Werner Eck:
concordo q 37 deve ser command
então vejamos quais informações de paridade, stop bits, start bits, baud-rate, etc que conseguimos extrair do mode:7a (e dos outros modes possíveis: 4e ou 5a)
e depois vejamos o que o command:37 faz
Werner Eck:
0x7A=01 11 10 10: (modo assíncrono) 1 stop bit; paridade: habilitada, par; compr. palavra: 7 bits; fator baud rate: 16x
Werner Eck:
modo 0x4e me parece ser assincrono tbm...
Werner Eck:
estou lendo agora
Werner Eck:
0x4E=01 00 11 10: (modo assíncrono) 1 stop bit; paridade: desabilitada, ímpar; compr. palavra: 8 bits; fator baud rate: 16x
Werner Eck:
0x5A=01 01 10 10: (modo assíncrono) 1 stop bit; paridade: habilitada, ímpar; compr. palavra: 7 bits; fator baud rate: 16x
Sun 2017-11-05, 19:07
Werner Eck:
são singelas diferenças no comprimento da palavra e paridade
Werner Eck:
mas é certo q está setando o USART em modo assíncrono sempre
Werner Eck:
agora os command word
Werner Eck:
0x37=00 11 01 11: (command instruction): X (irrelevante - chip em assíncrono e modo command); RTS=0, PE=OE=FE=reset; normal operation (TxD=high), receive enable=1; DTR=0, transmit enable=1
Werner Eck:
acho q é isso
Werner Eck:
pizza chegou, tá servido?
hahaha, não obrigado
Werner Eck:
🍕
Werner Eck:
domingo, nada melhor q pizza + cerveja e debugging de ROM
receive enable=1; junto com transmit enable=1 significa que ele está pronto a fazer ambos
Sun 2017-11-05, 19:07
Werner Eck:
isso
não sei se o terminal vai fazer algo com os dados entranto
Werner Eck:
o negócio agora é testar as combinações possíveis
talvez nesse momento inicial o operador precise fazer algo pra ativar o funcionamento (sair dessa tela de boot, esse splash screen com o nome do modelo no meio: "Sagitta 150 versao 4.00")
Werner Eck:
pode ser... tem o manual do usuário?
nope
Werner Eck:
outra coisa, vc podia tentar forçar ele a carregar a ROM 0?
peraí... nunca procurei hahaha
Werner Eck:
hahaha
Werner Eck:
pizza, volto em instantes
Sun 2017-11-05, 19:07
Werner Eck:
ou não.. rsss
Werner Eck:
brincadeira

eu tive que adicionar ao driver uma fonte de sinal de clock para /TxC e /RxC
a frequencia que eu usei foi chutada (copiada de outro driver)
aí com isso eu configurei o terminal genérico com 1200 baud
e o terminal sagitta começou a responder aos caracteres enviados pelo terminal genérico
enviei um commit atualizando o código do driver aqui: https://github.com/mamedev/mame/pull/2776/files
new non-working driver: Scopus Sagitta 150/180 serial terminal by felipesanches · Pull Request #2776 · mamedev/mame

mame - MAME
Werner Eck:
CARAAAAAALHOOOOO!!!
Werner Eck:
Tá funcionando o terminal!!!
Sun 2017-11-05, 20:08
:-)
Werner Eck:
se conseguissemos emular uma porta serial mapeando pra um host ethernet, já pensou??
falta ainda emular o teclado do sagitta
que deve ser relacionado àquela porta 0x50
e, sim, seria muito legal ligar esse sagitta emulado em alguma coisa moderna
Werner Eck:
vc disse q pegou um CI que estava conectado ao teclado do sagitta, não?
eu provavelmente vou depois tentar aprender como se faz o setup de sessão de login do GNU+Linux via pseudo-terminal
Werner Eck:
verdade, fazer o sagitta mandar caracteres pra um terminal via ethernet
não... era a ROM do gerador de catacteres e o próprio CRTC que estavam escondidos debaixo do painel metálico do teclado
Werner Eck:
por exemplo, uma maquina emulando um host ibm
Sun 2017-11-05, 20:08
Werner Eck:
ah tá
Werner Eck:
e o circuito do teclado?
ah sim! O próprio MAME pode emular máquinas que trabalham com terminais seriais
eu não estudei o circuito do teclado lá na usp
Werner Eck:
http://mainframewizard.com/content/free-mainframe-emulators
Free mainframe emulators

This is a list of free mainframe emulators available in the market
e existe sim a possibilidade de ter algum circuito integrado adicional que eu não vi, por que uma parte da pcb ainda ficou encoberta por uma outra chapa metálica
Werner Eck:
blz, isso fica pra próxima etapa
mas talvez dê pra inferir isso s'por análise do firmware como fizemos até agora mesmo
agora eu vou sair (vou no cinema assistir o novo Blade Runner)
acho que por hoje é só
Sun 2017-11-05, 20:08
Werner Eck:
por exemplo, esse: http://www.datasheetcatalog.com/datasheets_pdf/8/2/7/9/8279.shtml
8279 Datasheet pdf - PROGRAMMABLE KEYBOARD / DISPLAY INTERFACE - Intel

8279 datasheet, 8279 pdf, 8279 data sheet, datasheet, data sheet, pdf, Intel, PROGRAMMABLE KEYBOARD / DISPLAY INTERFACE
Werner Eck:
ow esse filme deve ser mto bom
Werner Eck:
blz - foi bom, rendeu bastante
Werner Eck:
Não esperava ver o sagitta emulado tão rápido
:-)
té mais
e Happy Hacking !
Werner Eck:
😄👍
documentei isso no driver. Olha aqui como faz: https://github.com/mamedev/mame/pull/2776/commits/cdcf2b2234efb7475f06a712fd9dd3c09fee1d0e
new non-working driver: Scopus Sagitta 150/180 serial terminal by felipesanches · Pull Request #2776 · mamedev/mame

mame - MAME
Com isso, agora o menu de config de dipswitches fica bonitinho, mostrando as opções existentes:
Mon 2017-11-06, 09:09



E essa aqui é uma forma melhor ainda de se fazer, usando as macros PORT_DIPLOCATION e PORT_DIPUNKNOWN_DIPLOC:

o resultado dessa alteração é que agora o MAME desenha um diagrama mostrando qual a posição de cada chavinha (dipswitches):

Eu quero preparar um cabo DB-25 <=> FTDI-USB
E também um cabo para ligar esses 3 pinos aí na tomada
E levar lá na USP pra tentar ligar esse terminal
Mon 2017-11-06, 10:10
inicilamente ver se ele mostra Sagitta 180 na tela assim que liga
e depois conectar nele via minicom pra ver qual é o baudrate correto (sabendo o baudrate, dá pra inferir qual é a frequencia de sinal de clock usada de fato para o TxC e o RxC)
E depois configurar meu laptop pra abrir uma sessão de login via console serial editando meu /etc/inittab http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-15.html
Werner Eck:
Cara, ficou tão legal isso. Sugestão pra deixar os textos das dips com a mesma aparência, troque a string "parity disabled" por "no parity" (era assim q os manuais dos modems se referiam a esses parâmetros na época).
Werner Eck:
Será q esse cabo a gente não encontra pronto no mercado? Vou dar uma pesquisada
é possível...
Werner Eck:
Deixa eu procurar aqui
eu tenho um ftdi (serial / USB) mas ele não tem o conector DB-25, pensei em adaptar
Werner Eck:
É aquele q sai 4 fios de um lado pra vc espetar na placa?
já o cabo de alimentação elétrica acho que vai ter que ser preparado mesmo
Mon 2017-11-06, 10:10
Werner Eck:
4 ou 5 não lembro direito
GND, VCC, TX e RX
Werner Eck:
Cara se olhando a foto de trás do equipamento, parece um plug macho de energia padrão abnt?
parece plug "banana"
Werner Eck:
É da mesma grossura q os banana?
https://en.wikipedia.org/wiki/Banana_connector
Banana connector

A banana connector (commonly banana plug for the male, banana socket or banana jack for the female) is a single-wire (one conductor) electrical connector used for joining wires to equipment. The term 4 mm connector is also used, especially in Europe, although not all banana connectors will mate with 4 mm parts, and 2mm banana connectors exist. Various styles of banana plug contacts exist, all based on the concept of spring metal applying outward force into the unsprung cylindrical jack to produce a snug fit with good electrical conductivity. Common types include: a solid pin split legthwise and splayed slightly, a tip of four leaf springs, a cylinder with a single leaf spring on one side, a bundle of stiff wire, a central pin surrounded by a multiply-slitted cylinder with a central bulge, or simple sheet spring metal rolled into a nearly complete cylinder. The plugs are frequently used to terminate patch cords for electronic test equipment, while sheathed banana plugs are common on multimeter probe leads.
não sei dizer. Pela foto dá a impressao de que sim
Werner Eck:
Teria q ver. Pq o banana tem um diâmetro razoavelmente maior q um plug d tomadas
Werner Eck:
Daí teria q improvisar mais
ah! obviamente, antes de tentar ligar na tomada seria bom eu dar uma revisada nos capacitores pra ver se não tem algum estourado...
Mon 2017-11-06, 10:10
ou vazando
Werner Eck:
Se fosse o mesmo tipo de pino q nos plugues das tomadas macho, poderia se fazer algo usando um adaptador
que eu me lembre, os capacitores parecem bons. Nada chamou muito a minha atenção quando olhei semana passada
Werner Eck:
Cara, eu já te adianto, melhor seria trocar todos os caps da fonte de cara
Werner Eck:
O problema nem sempre é a aparência e sim o comportamento interno
Werner Eck:
Capacitores tendem a apresentar ESR com o passar do tempo. São sempre os primeiros componentes a se deteriorarem e apresentar falhas.
Werner Eck:
Depois de + d 40 anos, é certo q não vão estar mais dentro dos parâmetros.
ESR = resistencia equivalente em série?
Werner Eck:
Sim.
Werner Eck:
E isso vc só consegue medir retirando o componente da placa
Mon 2017-11-06, 11:11
Werner Eck:
Daí eu te digo, mais fácil trocar logo
complicado isso... a vontade é de preservar o equipamento intacto sempre que possível
só fazer as alterações estritamente necessárias
Werner Eck:
Mas essas são...
e "alterações" no sentido de trocar peça por equivalente
Werner Eck:
Vc pode estourar a fonte se ligar ele assim
jamais modificar o circuito
Werner Eck:
Vai ser um baita estrago
é, eu imagino
Werner Eck:
Vc não estará modificando
Mon 2017-11-06, 11:11
Werner Eck:
Só reparando. Faz parte do processo.
sim, é verdade
faz sentido
Werner Eck:
Não é como pegar um fusca 66 original e trocar o carburador por injeção eletrônica
Werner Eck:
É como retirar o carburador, limpar por dentro e reinstalar
Werner Eck:
Só q capacitor a gente não tem como abrir.
Werner Eck:
Então trocamos por um novo. Vai ter a mesma aparência do original (talvez em um tamanho menor)
Werner Eck:
Não é tão crítico assim como vc está pensando q é.
Werner Eck:
É sussa.
Werner Eck:
E o Sagitta agradece.
Mon 2017-11-06, 11:11
pensando sobre o painel do Patinho Feio e como representar o output da TeleType...
Werner Eck:
sim
Teoricamente dair pra ligar o terminal Sagitta no Painel réplica do Patinho Feio
Werner Eck:
mas vc fala sobre o real ou o emulado?
é funcionalmente equivalente a uma teletype (com teclado e saída na tela igual ao que sairia impresso no papel)
na réplica
Werner Eck:
só pra situar, estou falando em emular o PF implementando esse código: https://github.com/wmoecke/PatinhoFeio_Arduino
wmoecke/PatinhoFeio_Arduino

PatinhoFeio_Arduino - Arduino Code to emulate the Patinho Feio Computer and interface with a replica front-panel.
ligado ao terminal real
Werner Eck:
sim, acho legal. Só precisamos fazer a conecão real
Werner Eck:
ah o terminal real?
Mon 2017-11-06, 11:11
sim, emulador do pato rodando no arduino controlando chaves e luzes do painel ligado ao terminal sagitta de verdade
Werner Eck:
daí temos q ver se dá pra fazer ele funcionar sem muito trabalho
o arduino tem porta serial. É sossegadíssimo de fazer
Werner Eck:
sim
só que não é portátil
Werner Eck:
minha única preocupação em usar o sagitta real é q talvez exija uma manutenção mais pesada
Werner Eck:
isso tbm.
então um displayzinho simulando a saída na teletype pode ser uma opção mais compacta
Werner Eck:
foi o q eu pensei, e é sussa de implementar
Werner Eck:
até pq já tenho implementado, basta mudar a entrada serial
Mon 2017-11-06, 11:11
aí por questão de estética eu faria um segundo quadro, contendo uma fotografia duma teletype modelo ASR33 e, embutido no quadro, um display de texto com uma ou duas linhas de texto
Werner Eck:
hahaha q boa idéia!!
Werner Eck:
uma linha só pelo amor de Deus... rsss
esses displauys LCD de texto são melhores do que matrizes de LED para esse propósito: http://www.priority1design.com.au/serial_display-4002_front.jpg
Werner Eck:
ah tá
só que esse aí é de 40 chars
a teletype acho que chegava a 72
então é uma aproximação apenas
Werner Eck:
https://www.filipeflop.com/blog/controlando-um-lcd-16x2-com-arduino/
Controlando um LCD 16x2 com Arduino - FilipeFlop

Neste tutorial você vai encontrar alguns testes com o display LCD 16x2 com Arduino, um display muito comum e que se adapta a diversos projetos. Confira!
o bom de ter mais de uma linha é que facilita da a sensação de rolagem do papel da teletype pulando de linha
Mon 2017-11-06, 11:11
fazendo scroll
e não tem input como na teletype. Apenas output
Werner Eck:
exato
tem um programa relativamente grande do patinho feio chamado HEXAM
Werner Eck:
até pq dá pra inserir programas nele por chaves ou por fita perfurada, como vc chegou a fazer, não?
é um exemplo que vem a listagem completa no manual do assembler
e serve para manipular o conteúdo da memória
é uma espécie de monitor do sistema
e para opera-lo é necessário ter uma teletype, pra digitar os comandos e ver a saída
isso
Mon 2017-11-06, 11:11
algum tipo de simulação de uma interface de fita perfurada seria legal também
pensei até que um leitor de cartão SD poderia ser usado para abstrair o processo. Com cada cartão sendo uma fita individual
Werner Eck:
como foi q vc e o prof. adaptaram aquela leitora de fitas?
do ponto de vista tátil é meio tosco, mas é o melhor que imaginei até agora
o professor Guido Stolfi comprou um cebeçote de uma máquina antiga no eBay
e interfaceou
Werner Eck:
com o que exatamente?
fazer isso seria bem legal
com alguma placa de microcontrolador que ele prefere usar. Não sei dizer qual é. Ele não me contou os detalhes ainda.
Eu precisaria perguntar.
Mon 2017-11-06, 11:11
Werner Eck:
essa interface era com o seu PF emulado?
não
ele interfaceou com o computador dele apenas para fazer o dump dos dados das fitas
Werner Eck:
ah tá
Werner Eck:
mas seria pela serial?
os arquivos das fitas do acervo pessoal dele estão aqui: https://github.com/felipesanches/PatinhoFeio/tree/master/fitas_perfuradas
felipesanches/PatinhoFeio

PatinhoFeio - Repositório contendo documentação técnica sobre o Patinho Feio, primeiro computador brasileiro (Escola Politécnica da USP - 1971)
eu não sei exatamente o que ele fez
sei o que ele fez, mas não sei os detalhes técnicos da solução usada
Werner Eck:
então, eu pensei q se ele tiver já feito esse microcontrolador ler os dados das fitas e passar serialmente os bits, a gente poderia adaptar isso ao arduino.
sim, mas o mais difícil é a interface mecânica/ótica
Mon 2017-11-06, 11:11
Werner Eck:
exato
Werner Eck:
que parece q ele já fez
o resto a gente refaz com os pés nas costas
Werner Eck:
por isso mesmo
Werner Eck:
entendeu?
entendi
Werner Eck:
a parte mais dureza parece q ele já fez
Werner Eck:
se apresentarmos o painel pronto, emulando no arduino e mostrando em um display, será q ele não se anima a conectar a leitora dele ao nosso PF?
acho que sim
Werner Eck:
até pq esse hardware deve estar encostado agora
Mon 2017-11-06, 11:11
ele já viu o painel não funcional. E também já viu o emulador do Pato no MAME. Acho que é só questão de jogar a idéia.
Werner Eck:
seria legal pra ele ver o hardware dele conversando com o nosso, e passando fitas de verdade pra o PF
Werner Eck:
vamos terminar esse painel
Werner Eck:
daí a gente mostra a coisa toda funcionando, deixamos ele brincar
Se não me engano, a interface de fita está na casa dele. Levar isso para exposição na USP seria bem legal.
Se ele topar.
ok, acho uma boa
Werner Eck:
e daí no meio da brincadeira, jogamos
Werner Eck:
"poutz, já pensou q legal seria se desse pra fazer a carga dos programas originais do PF em fita?"
as coisas aos poucos vão se alinhando. Acho muito legal essa idéia.
Mon 2017-11-06, 11:11
vamos trabalhar no painel então
Werner Eck:
lógico q ele iria dar aquele sorrisinho maroto
Werner Eck:
beleza
vou almoçar. Té mais!
Werner Eck:
falow
Werner Eck:
depois a gente fala os detalhes disso
Werner Eck:
Aqui tem alguns cabos conversores USB <-> DB9/25 - o preço varia: http://bit.ly/2hMdUFA
Werner Eck:
Eu acredito que "adaptar" seu cabo usb/ftdi em um conector DB25 não seja na prática, viável. Pois além dos TX/RX existem sinais de controle (DTR/DSR/RTS/CTS) que precisam de sinalização. Eu não sei quanto a se esses cabos prontos vêm com circuitos que adaptam esses sinais.
Werner Eck:
http://www.firewall.cx/networking-topics/cabling-utp-fibre/121-network-serial-cable.html
Serial Direct Cable Connection, DB9, DB25, COM Ports and Pinouts

This article explains the concept of serial data connections. Topics covered include: PC Serial ports, pinouts, speeds, connector interfaces (db9, db25), null modem cable pinout (db9 and db25) and much more. Included are diagrams with all pinouts and functions.
Werner Eck:
Exemplo de um cabo *conversor* (fornece todos os sinais de dados e controle) é esse: https://www.comm5.com.br/produtos/conversor-usb/1S-USB/
1S-USB - Comm5

Conversor de USB para 1 saída serial RS232 CARACTERÍSTICAS Atenta à necessidade de controle de todos os sinais disponíveis em uma porta serial nos periféricos envolvidos em uma automação, principalmente comercial, o conversor 1S-USB da Comm5 foi criado especialmente para atender esta carência de mercado. Sendo assim, sua compatibilidade abrange boa parte dos periféricos seriais […]
Mon 2017-11-06, 14:02
Werner Eck:
o problema é q esse modelo tem preço na faixa dos R$120~R$150, o q me faz erguer as sombracelhas, especialmente qdo vejo um anúncio assim: http://bit.ly/2zhLT2D
Cabo Conversor USB X Serial DB9 e DB25

Aplicações - Conecta seu PC atual em mouses, scanners, impressoras e outros dispositvos que usem porta serial (COM). Compatibilidade - Suporta as especificações USB 1.1 e 2.0 - Compatível com todas as portas seriais comuns RS 232 (DB25 ou DB9) - Tamanho do cabo: 80 cm
Tela inicial do sagitta 180 com a ROM #0 carregada em vez da ROM supostamente herdada do 150:

a conexão com o terminal genérico não funciona com essa outra ROM, entratanto.
Talvez essa outra ROM espere receber alguma sinalização diferente pela serial. Talvez essa sim use algum protocolo específico dos computadores Burroughs, em vez de simplesmente enviar e receber raw ASCII.
Werner Eck:
ummm...
Werner Eck:
ela tem uma série de parametros listados na tela
Werner Eck:
será q isso vem das dips?
Werner Eck:
especialmente interessante nesse caso é o "Atraso Interno do CTS"
Werner Eck:
vc só redirecionou o CS para essa ROM ao invés da primeira?
Mon 2017-11-06, 16:04
Werner Eck:
deu uma olhadinha se nessa ROM tem tbm as palavras de inicialização do 8251?
Werner Eck:
esses aqui
não posso ver isso agora
só carreguei a outra ROM e rodei o emu
por que do nada lembrei que era um teste óbvio que eu ainda não tinha feito. E, de fato, a recompensa foi imediata. Mas eu não posso dedicar tempo pra ver isso em mais detalhes agora.
Werner Eck:
td bem
você pode tentar fazer o seu setup de compilação do MAME aí no seu computador
Werner Eck:
eu ia ver com vc o q eu preciso ter aqui instalado
Werner Eck:
tem q ser no linux?
e fazer o checkout do branch sagitta180 do meu repositório
Mon 2017-11-06, 16:04
Não. Basta ter o git instalado
e depois instalar as dependências e tal
mas supostamente funciona em qualquer dos principais sistemas operacionais
Werner Eck:
compilador, essas coisas?
o MAME é multi-plataforma
Werner Eck:
o compilador é do próprio MAME?
Werner Eck:
ou tem q instalar o gtk, etc?
não. A gente usa o gcc
não precisa de gtk, mas precisa de outras bibliotecas
Werner Eck:
ok
Mon 2017-11-06, 16:04
compilar o MAME por si só já é um grande aprendizado
Agora, uma coisa é verdade: não precisa ser no GNU+Linux. Mas eu, pessoalmente, recomendo fortemente que seja ;-)
Bom... vou voltar pro meu trampo aqui. Té mais
Werner Eck:
o único linux q eu tenho aqui é o Kali na VM
Werner Eck:
blz vou ver aqui o q eu consigo fazer
Werner Eck:


Werner Eck:
sou chique pra kct... até git já tenho
Werner Eck:
só pq eu gosto de vc, vou fazer no Kali.
Tá valendo :-)
você tem conta no github ?
Mon 2017-11-06, 17:05
Werner Eck:
sim
Werner Eck:
wmoecke
ah é, verdade! Você mostrou um repo do Patinho Feio pra Arduino que você fez fork, verdade
agora lembrei
Werner Eck:
eu preciso fazer checkout nesse? https://github.com/felipesanches/mame.git
felipesanches/mame

mame - MAME - Multiple Arcade Machine Emulator
pode ser
vc pode fazer clone do mamedev/mame.git
ooops
clone não
fork
Mon 2017-11-06, 17:05
Werner Eck:
isso q eu ia falar
faz um fork do repo principal
Werner Eck:
faço primeiro um fork do mamedev e depois dou checkout aqui
aí você clona localmente o seu
depois você adiciona o mamedev e o meu como remotes
Werner Eck:
ishi
Werner Eck:
agora vc falou grego
um "remote" nada mais é que uma referência para algum outro repositório git existente para um dado projeto
Werner Eck:
deixa eu ir la fazer as primeiras duas etapas
quando você clona localmente o seu, o git cria automaticamente um remote chamado "origin" apontanto do seu repo local para o seu repo remoto hospedado nos servidores do github
Mon 2017-11-06, 17:05
tanto é que logo depois de fazer o clone, você pode digitar o comando "git remote -v" (-v é pra ser "verboso" e te mostrar as URLs) e com isso você vai ver que "origin" consta lá com a URL do seu repo no github
mas depois você pode adicionar outros remotes
veja por exemplo o meu caso:

eu tenho esse monte de remotes cadastrados aí por que eu já colaborei com essas outras pessoas
o remote "ramiro" é de um outro brasileiro que também contribui código pro MAME
e eu costumo apelidar o repo principal de um projeto de "upstream"
e veja que no meu caso "origin" é o meu repo pessoal
Werner Eck:
pq sua maquina chama guaraná?
"gitlab" também é um repo pessoal meu só que hospedado no GitLab
Mon 2017-11-06, 17:05
por que eu posso :-)
Werner Eck:
kkk
Werner Eck:
então tá, esses nomes q tem à esquerda foi vc q deu
sim
Werner Eck:
e a finalidade de vc adicionar um remote seria qual?
o "origin" é dado automaticamente pelo cliente de git como um remote apontando para o repo de onde você fez o clone inicial
Werner Eck:
entendi. eu ainda estou clonando por isso não fiz nada ainda
é pra você poder fazer fetch desses repos pra sincronizar seu código com o código das outras pessoas
Werner Eck:
tá rolando
Werner Eck:


Mon 2017-11-06, 17:05
por exemplo... se você fizer uns commits seus e quiser contribuir, você vai fazer push pro seu repo pessoal lá do github, que é o remote "origin"
mas de tempos em tempos você vai querer atualizar o seu repo com os commits novos que os desenvolvedores do MAME fizeram recentemente, e para isso você vai ter que sincronizar com o remote "upstream"
então a primeira coisa que você pode fazer, que vai ser bem útil é:
git remote add upstream https://github.com/mamedev/mame.git
mamedev/mame

mame - MAME
Werner Eck:
tbm acho bom criar um remote do seu repo não?
e depois você pode também fazer:
git remote add juca https://github.com/felipesanches/mame.git
felipesanches/mame

mame - MAME - Multiple Arcade Machine Emulator
Werner Eck:
daí eu posso fazer upstream direto pra vc
Werner Eck:
blz
Werner Eck:
deixa ele terminar aqui... aposto como isso deve levar um tempo
Mon 2017-11-06, 17:05
é... é um repo bem grandão
e depois você provavelmente ainda vai gastar um bom tempo instalando as dependências pra conseguir compilar corretamente
minha dica é tentar compilar e ver onde falha
e com isso ir descobrindo quais bibliotecas ainda falta instalar
Werner Eck:
😒 pressinto dores de cabeça por vir
Werner Eck:
bom aqui nessa minha distro já vem com muita coisa pré-instalada... vamos ver
pra facilitar o seu build sugiro você começar fazendo um build "single-driver", pra evitar de ter que compilar o MAME inteiro desnecessariamente
como o zezinho e o sagitta ainda estão aguardando alguém fazer o merge dos respectivos pull requests, é mais fácil começar por algum driver meu que já esteja integrado no MAME como, por exemplo, o do CP-500 da semana passada
Werner Eck:
blz
a linha de comando mágica para isso é:
Mon 2017-11-06, 17:05
make SUBTARGET=trs80_ SOURCES=src/mame/drivers/trs80.cpp REGENIE=1
se isso rolar aí você me avisa que a gente parte pro passo seguinte que é pegar os commits do meu remote com o código de emulação do sagitta
que envolve essa complexidade extra de lidar com remotes que você não conhecia ainda
Werner Eck:
ih, vc vai ver q tem muita coisa q eu desconheço sobre o git...
vamos um passo por vez que vai ser de boa ;-)
Werner Eck:
aquela magia negra q vc fez no garoa... me pede pra refazer...
hahaha
Werner Eck:
😳
Werner Eck:
acabo com o seu repo e o do MAME numa tacada só
Werner Eck:
Até o Papai Nicola vai vir bater na porta da minha casa
Mon 2017-11-06, 17:05
o bom é que no git se alguém se ferrar é só você. Minha cópia do repo continua inteirinha na minha máquina :-)
o dano fica contido
Werner Eck:
Por isso eu SEMPRE zipo td antes de fazer qq coisa relacionada a git. Se zicar, eu sobrescrevo tudo com a cópia
Werner Eck:
Já passei por isso no git e jurei nunca mais deixar o git me ferrar
Eu já fiz coisas similares. Mas só quando resolve explorar alguma feature do git que eu não conheço direito ainda.
no dia a dia eu aprendi a confiar
por que já me acostumei com o uso básico e uma ou outra funcionalidade avançada.
Werner Eck:
Eu tinha problemas qdo um outro cara fazia commits e eu ainda não tinha dado push
Werner Eck:
imagina com 600 e tralala
Werner Eck:
😂
Mon 2017-11-06, 17:05
Werner Eck:
vou precisar aprender a dar commit toda hora
não necessariamente
pra isso existe o rebase
por exemplo
(é uma das opções)
mas deixa esses detalhes pra depois
eu explico tudo com calma quando chegar a hora
Werner Eck:
sim
Werner Eck:
estou me atendo aos primeiros passos
Werner Eck:
to sabendo q o professor q eu tenho agora manja bem do assunto
Mon 2017-11-06, 17:05
Werner Eck:
vai ser mais suave
Werner Eck:
e o clone ainda ta rolando
será que eu devo começar a cobrar a hora-aula ? LOL
(tô brincando)
Eu costumo seguir no meu dia-a-dia o conselho do ET Bilu: "Busquem conhecimento!"
Werner Eck:
Sempre fiz isso na vida.
Werner Eck:
Nunca pegaram na minha mãozinha pra me levar. Sempre foi apanhando
Werner Eck:
Mas sempre é bom qdo se tem alguém com experiencia e paciência por perto pra perguntar as coisas
Comigo foi a mesma coisa. Aprendi muita coisa como autodidata e apenas em algumas poucas ocasiões eu tive quem me ajudasse. Talvez por isso mesmo que eu tenho tanto gosto por passar adiante o conhecimento às outras pessoas. Acho que é por que eu senti na pele a falta de alguém me orientando quando eu era mais jovem.
Alguns exemplos de exceções foram o Ricardo Bittencourt, o Spy, o Marco dal Poz e o Lucas Villa Real. Esses foram caras que me ensinaram muita coisa boa!
Mon 2017-11-06, 17:05
Werner Eck:
eu valorizo cada pessoa q me ajudou na minha trilha. Não esqueço de nenhum até hj
E mais recentemente outras pessoas entraram nessa minha lista de "gurus", como o Luciano Ramalho e o DQ.
Werner Eck:
foram poucos
O Garoa Hacker Clube tem um poder de atrair essas pessoas boas, eu acho.
boas de bondade! Não apenas boas de técnica.
Werner Eck:
é q gente q se interessa por aprender fazendo, normalmente é gente do bem
Werner Eck:
pessoal q não tem preguiça de cair em cima de um negócio pra se aprofundar naquilo
yep!
esse é o espírito
vide nossos ultimos 4 ou 5 dias em cima desse terminal serial da Scopus
Mon 2017-11-06, 17:05
(e o Zezinho)
Werner Eck:
pois é exatamente isso. A gente se deu bem logo de cara pq eu senti essa facilidade de chegar e entrar de sola dando palpites e vc corrigindo
Werner Eck:
(e saber ouvir tbm é essencial)
Werner Eck:
a gente só aprende coisas novas se souber escutar o outro lado. Tanto eu quanto vc fomos ninjas nisso.
Werner Eck:
por isso a coisa flui tão naturalmente
Às vezes eu sou um pouco arrogante. Aconteceu de você falar a coisa certa e eu ignorar achando que tava errado. Mas um pouco depois me toquei. Eu tenho treinado ultimamente isso. Aprender a escutar melhor as pessoas.
Quando eu percebo que estou sendo um pouco arrogante eu fico com vergonha. E acho que é bom. Por que é um mecanismo bom pra eu evitar de fazer isso e me auto-policiar.
Werner Eck:
hehehe
Werner Eck:
só de vc falar isso já é sinal de q vc tem caráter.
Werner Eck:
ninguém é santo
Mon 2017-11-06, 18:06
bom... chega de sessão de terapia
hahaha
Werner Eck:
👍 de vez em qdo faz bem.
Werner Eck:
nada dito aqui poderá nem será usado contra vc
Werner Eck:
😀
ooops! https://garoa.github.io/Telegram_logs_Garoa_Hacker_Clube_Publico/formatted/html/
Werner Eck:
pqp tá td lá, até ontem.
Werner Eck:
ow vc assistiu o Blade Runner?
e estará todo o resto também
Assisti sim. Não me impressionou. Mas prefiro não bater papo sobre isso aqui nesse grupo ;-)
Mon 2017-11-06, 18:06
Manter o foco é bom
Para off-topics como esse pode me chamar em pvt
Werner Eck:
ok
Werner Eck:
tem um negócio pra te perguntar off mas não é sobre o filme.
ok. Segue aqui um script para concatenar páginas escaneadas de documentos em alta resolução, comprimindo e gerando um PDF lowres de tamanho razoável:
https://github.com/felipesanches/Sistema_de_Programacao_Cross-Montador_para_um_Minicomputador__MariaAliceFerreira__1974/blob/master/PDF/make_pdf.sh
felipesanches/Sistema_de_Programacao_Cross-Montador_para_um_Minicomputador__MariaAliceFerreira__1974

Sistema_de_Programacao_Cross-Montador_para_um_Minicomputador__MariaAliceFerreira__1974 - Digitalização da tese de mestrado "Sistema de Programação 'Cross-Montador' para um Minicomputad...
Isso foi usado no processo de digitalização de vários dos documentos relacionados ao Patinho Feio
aqui nesse outro repo tem uma versão ligeiramente diferente desse script, sem uso do parametro rotate e com uma resolução final diferente: https://github.com/felipesanches/Automacao_de_Projetos_de_Sistemas_Digitais__Posicionamento_de_Componentes__Selma_Shimizu_1977/blob/master/PDF/make_pdf.sh
felipesanches/Automacao_de_Projetos_de_Sistemas_Digitais__Posicionamento_de_Componentes__Selma_Shimizu_1977

Automacao_de_Projetos_de_Sistemas_Digitais__Posicionamento_de_Componentes__Selma_Shimizu_1977 - Escaneamento da dissertação de mestrado "Automação de Projetos de Sistemas Digitais - Posicionam...
nitidamente o script não é genérico e foi editado caso a caso em função das necessidades de cada iniciativa de escaneamento
não é a ferramenta universal, mas é um ponto de partida pra se fazer esse tipo de manipulação de imagens
Mon 2017-11-06, 18:06