Någon guru på assembler till Intel 8035.

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Inga namn är slumpmässigt valda :D
Allt utgår från 41612-kontakterna, sitter 2 st på CPU-kortet där all I/O finns.
De är märkta L (left) och R (right), 1 och 32 samt A och B.

Alla signaler till och från dessa kontakter har en label:
LA1 == Left connector, side A, pin 1.
LB32 == Left connector, side B, pin 32
RAB6 == Right connector, side A and B, pin 6.

Jag har lagt till den texten till schemat. Jag har även satt med stor röd font, en bokstav och en siffra på varje krets.
Det är så allt refereras i originalschemat, CPU-kortet är indelat vertikalt 1 - 10 (ingen siffra 7) och horisontalt A - E.
En referens i Troubleshooting Guide till IC C4 ger att det är EPROM'ets placering.

Dock, ska ändra och sätta lablar på RESET, R och W
Castor
Inlägg: 2128
Blev medlem: 24 mars 2012, 13:03:49

Re: Någon guru på assembler till Intel 8035.

Inlägg av Castor »

Men vem är schemat tänkt för? Apparaten finns ju och endast den som har apparaten har möjlighet att felsöka. Om schemat är rätt och acceptabelt för TS borde det vara OK. Att ändra för att vi övriga ska ha lättare att förstå är väl "överkurs"?
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Just nu finns det tre (3) kända spel, mitt, ett i Danmark och ett i Nederländerna. Alla är trasiga pga batteriläckage.
Jag har skickat schemat till de två andra, och de är oerhört tacksamma för mitt jobb.
Att schemat inte är ”by the book” är något jag helt struntar i, så länge de som har spelet kan tolka schemat är jag nöjd.
Jag har lärt mig mycket hur spelet är designat och det är rätt smart gjort.
Dock har jag lite att lära hur man kodar i MCS-48, liiite annorlunda mot 6809 8)
Castor
Inlägg: 2128
Blev medlem: 24 mars 2012, 13:03:49

Re: Någon guru på assembler till Intel 8035.

Inlägg av Castor »

Du har ju disassemblerat koden, jag håller på att kolla igenom och försöka förstå. Vissa bitar är "konstiga", har du en hex eller binär
så man kan se om det är texter eller tabeller som disasmen har gjort till kod?
guckrum
Inlägg: 1893
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Någon guru på assembler till Intel 8035.

Inlägg av guckrum »

Ja, det hade inte skadat om hexkoderna står före mnemonicsen på raderna, typ "a9 03 lda #$03".
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Bin-filen finns här https://github.com/mickecamino/Compugame66

Heter compugame-2716.bin
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Jag vet inte hur jag lyckades disassemblera koden, för när jag testar igen funkar det inte :(
Castor
Inlägg: 2128
Blev medlem: 24 mars 2012, 13:03:49

Re: Någon guru på assembler till Intel 8035.

Inlägg av Castor »

Jag gör ett försök ikväll att disassemblera, vilket program använde du?
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Jag har testat följande:
dasmxx https://github.com/nejohnson/dasmxx/
8048DIS.EXE (DOS-baserad) https://ftp.sunet.se/mirror/archive/ftp ... 048dis.zip

+ någon till jag inte fick att funka.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Jag mätte om CPU-kortet då jag misstänkte att jag ritat fel på schemat vad det gäller ingångarna P1.0 - P1.5 och T0/T1.
Nu ser det bättre ut mot koden, T0 används för COIN IN och T1 används för START-knappen.
Knapparna YELLOW, PLUS, MINUS, MULTIPLY, DIVIDE och omkopplaren TEST är mot P1.0 - P1.5.
Nytt schema
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Jag har försökt gå igenom den disassemblerade koden, och hade riktiga problem att fatta vad koden gjorde. Tills jag läste på om 8035 här https://www.cpu-world.com/Arch/8035.html
Det jag inte förstod var arkitekturen, jag tänkte 6809 när jag försökte förstå vad koden gjorde.
FEL
Program-minnet, i detta fall EPROM’et adresseras helt oberoende av RAM.
8035 har internt 64 byte RAM och det sitter i Compugame externt RAM på 256 byte vilket är max vad CPU kan adressera, 256 byte.

Jag har två versioner av koden till Compugame, 66-9 som sitter i mitt och spelet i NL. 66-23 som sitter i det danska spelet.
Jag disassemblerade 66-23 i går, det diffar lite mot 66-9, mest en extra CALL lite här och där.
Jag slänger upp bin-filen för 66-23 på Github inom kort tillsammans med den disassemblerade koden.
Castor
Inlägg: 2128
Blev medlem: 24 mars 2012, 13:03:49

Re: Någon guru på assembler till Intel 8035.

Inlägg av Castor »

Du skrev i ett tidigare inlägg:

I första skedet vill jag testa alla utgångar, dvs, en 1:a på en utgång på 74LS373 ger jord på ULN2003 som tänder en lampa.
Loopa igenom alla utgångarna, tänd en lampa i taget. När alla utgångar är loopade, gör samma sak igen, fast låt lamporna bli tända, detta för att lasta spänningsdelen och se om där är något som ballar ur.
Sak samma med 7-segmentarna. Dessa kan testas i en loop, ett segment och en display i taget. Loopa a-g (dp används inte) en display i taget. Loopa sen alla displayerna, för att till sist ha alla segmenten tända på alla displayer.

Om du kollar timingen på skrivningen till displayerna (hur ofta skriver man till nästa display) är det nog inte särskilt svårt att skriva ett program för att testa som du vill. Att försöka reda ut vad programmet gör i detalj är mycket svårare, uppräkning av resultat, bestämma om det ska vara lättare att få 66, förmodligen något slags slumpgenerator osv. Det behövs ju inte för ett program som testar HW. Att testa ingångarna inkl T0 o T1 kan ju göras genom att man väljer dela av testprogrammet med resp ingång.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Jag vet inte var anropen till LED’arna görs :(
De styrs av 4028’an och är aktiv när ingen adressering görs, dvs, 0 på ingångarna A, B, C och D.
Tolkat det som att det är Program Memory 0000.
Och vad som då finns på databussen, de fyra lägsta bitarna (på 4511) bestämmer vilka segment som ska tändas och de 4 högsta (på 4514) vilken av dom det är.
Stämmer mina tankar?
Castor
Inlägg: 2128
Blev medlem: 24 mars 2012, 13:03:49

Re: Någon guru på assembler till Intel 8035.

Inlägg av Castor »

Det är inte Program Memory. När man skriver till Adress 0 med MOVX @R0,A eller MOVX @R1,A latchas det som finns i A, låga nibble väljer väljer vilken siffra som ska visas på displayen mha 4511-decodern och höga nibble väljer vilken av displayerna som skall tändas.
Samtidigt skrivs i 5101-minnet, alltså en spegel av vad som visas. Den kan sedan läsas när man går nästa varv i visningen.
Eventuellt sparas värdet i IRAM oxå och bearbetas/ändras där innan det läggs ut. (Så skulle jag göra :D )
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 4797
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

Re: Någon guru på assembler till Intel 8035.

Inlägg av Mickecarlsson »

Ser ut att ligga i Timer-rutinen, Ser mina anteckningar rätt ut?

Kod: Markera allt

;
; TIMER INTERRUPT ENTERS HERE
;
X00d8:  sel     rb1             ; 00d8 - d5          Select register bank 1
        mov     r4,a            ; 00d9 - ac          Save A
        inc     r5              ; 00da - 1d          Increment R5
        mov     a,r5            ; 00db - fd          Put in A
        xrl     a,#0eh          ; 00dc - d3 0e       XOR a with 0Eh (1110)
        jnz     X00e2           ; 00de - 96 e2       Jump not 0
        clr     a               ; 00e0 - 27          Reset A
        mov     r5,a            ; 00e1 - ad          Put in R5
X00e2:  mov     a,r5            ; 00e2 - fd          Get R5
        add     a,#20h          ; 00e3 - 03 20       Add 20h (32) to whats in R0
        mov     r0,a            ; 00e5 - a8          Put it in R0
        movx    a,@r0           ; 00e6 - 80          Read from RAM pos 32 + index
        mov     r1,#0           ; 00e7 - b9 00       Set R1 to 0
        movx    @r1,a           ; 00e9 - 91          Write to address 0000 = LED display LSB = data, MSB 10h to 1Eh = what digit, 1 of 14  
        jnt0    X00ee           ; 00ea - 26 ee       COIN IN?
        mov     r7,#1           ; 00ec - bf 01       Put 1 in R7
X00ee:  mov     a,#0fah         ; 00ee - 23 fa       Set A to FAh (250d)
        mov     t,a             ; 00f0 - 62          Put in Timer register
        mov     a,r4            ; 00f1 - fc          Restore A
        sel     rb0             ; 00f2 - c5          Select regiter bank 0
        retr                    ; 00f3 - 93          Return from Interrupt
;
Skriv svar