-
Notifications
You must be signed in to change notification settings - Fork 1
/
notes.txt
96 lines (88 loc) · 5.78 KB
/
notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Wat notes van mij (denz)
1. Big endian (duh)
2. De eerste 0x400 bytes zijn de vector tabel. zie https://wiki.neogeodev.org/index.php?title=68k_vector_table
3. Op 0x00000400 begint de code met het vullen van het RAM geheugen met 0xaa55, en daarna weer uitlezen.
Dit lijkt mij een memory check, en geeft mij het idee van 64K RAM op 0x00300000
Begin van de rom image (alles samengevoegd)
00000000 00 30 3f fe 00 00 04 00 00 01 84 e4 00 01 88 3c |.0?............<|
----------- initial stack pointer 0x00303ffe
----------- reset/poweron vector 0x00000400
Dit is dus een stuk code dat als eerste wordt uitgevoerd:
00000400 41 f9 00 30 00 00 20 3c 00 00 7f ff 30 fc aa 55 |A..0.. <....0..U|
00000410 51 c8 ff fa 41 f9 00 30 00 00 20 3c 00 00 7f ff |Q...A..0.. <....|
00000420 0c 58 aa 55 66 04 51 c8 ff f8 48 c0 52 80 e3 80 |.X.Uf.Q...H.R...|
00000430 44 80 06 80 00 01 00 00 23 c0 00 30 d9 14 4f f9 |D.......#..0..O.|
00000440 00 30 3f fe 4b f9 00 31 58 00 4e b9 00 00 04 66 |.0?.K..1X.N....f|
00000450 42 a7 42 a7 42 a7 4e b9 00 01 80 00 4f ef 00 0c |B.B.B.N.....O...|
00000460 2f 00 4e fa ff fe 20 3c 00 00 03 cc 55 80 6f 00 |/.N... <....U.o.|
00000470 00 60 20 7c 00 00 05 00 0c 10 00 53 66 52 52 88 |.` |.......SfRR.|
00000480 60 00 00 48 10 10 04 00 00 43 66 00 00 44 52 88 |`..H.....Cf..DR.|
00000490 70 00 10 10 e1 88 10 28 00 01 e1 88 10 28 00 02 |p......(.....(..|
000004a0 e1 88 10 28 00 03 53 80 58 88 72 00 12 10 e1 89 |...(..S.X.r.....|
000004b0 12 28 00 01 e1 89 12 28 00 02 e1 89 12 28 00 03 |.(.....(.....(..|
000004c0 58 88 22 41 12 d8 51 c8 ff fc 0c 10 00 45 66 b4 |X."A..Q......Ef.|
000004d0 4e 75 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |Nu..............|
000004e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
gedisassembleerd:
400: 41f9 0030 0000 lea 0x300000,%a0 ;/ memory check 32k x 16bits
406: 203c 0000 7fff movel #0x7fff,%d0 ;
40c: 30fc aa55 movew #0xaa55,%a0@+ ; vul elk geheugen woord met 0xaa55
410: 51c8 fffa dbf %d0,0x40c ;
414: 41f9 0030 0000 lea 0x300000,%a0 ;
41a: 203c 0000 7fff movel #0x7fff,%d0 ;
420: 0c58 aa55 cmpiw #0xaa55,%a0@+ ; compare elk geheugen woord met 0xaa55
424: 6604 bnes 0x42a ; ohnoes! exit loop
426: 51c8 fff8 dbf %d0,0x420 ;\
42a: 48c0 extl %d0 ;/ reken... reken...
42c: 5280 addql #1,%d0 ; dit lijkt op rekenwerk om de
42e: e380 asll #1,%d0 ; downcounter d0 om te rekenen naar het
430: 4480 negl %d0 ; gefaalde geheugenadres. Of zo.
432: 0680 0001 0000 addil #65536,%d0 ;\
438: 23c0 0030 d914 movel %d0,0x30d914 ;/ memtest resultaat in 0x30d914
43e: 4ff9 0030 3ffe lea 0x303ffe,%sp ; re-init stack pointer
444: 4bf9 0031 5800 lea 0x315800,%a5 ; functiecode?
44a: 4eb9 0000 0466 jsr 0x466 ;\ en jump!
450: 42a7 clrl %sp@- ;/ cleanup stack frame?
452: 42a7 clrl %sp@- ;
454: 42a7 clrl %sp@- ;\
456: 4eb9 0001 8000 jsr 0x18000 ; ik denk dat dit de main routine is
45c: 4fef 000c lea %sp@(12),%sp ;
460: 2f00 movel %d0,%sp@- ;
462: 4efa fffe jmp %pc@(0x462) ; geen idee. jump to self?
466: 203c 0000 03cc movel #972,%d0 ;/ Hier gebeurt iets na afloop van de memtest
46c: 5580 subql #2,%d0 ;
46e: 6f00 0060 blew 0x4d0 ;
472: 207c 0000 0500 moveal #1280,%a0 ;
478: 0c10 0053 cmpib #83,%a0@ ;
47c: 6652 bnes 0x4d0 ;
47e: 5288 addql #1,%a0 ;
480: 6000 0048 braw 0x4ca ;
484: 1010 moveb %a0@,%d0 ;
486: 0400 0043 subib #67,%d0 ;
48a: 6600 0044 bnew 0x4d0 ;
48e: 5288 addql #1,%a0 ;
490: 7000 moveq #0,%d0 ;
492: 1010 moveb %a0@,%d0 ;
494: e188 lsll #8,%d0 ;
496: 1028 0001 moveb %a0@(1),%d0 ;
49a: e188 lsll #8,%d0 ;
49c: 1028 0002 moveb %a0@(2),%d0 ;
4a0: e188 lsll #8,%d0 ;
4a2: 1028 0003 moveb %a0@(3),%d0 ;
4a6: 5380 subql #1,%d0 ;
4a8: 5888 addql #4,%a0 ;
4aa: 7200 moveq #0,%d1 ;
4ac: 1210 moveb %a0@,%d1 ;
4ae: e189 lsll #8,%d1 ;
4b0: 1228 0001 moveb %a0@(1),%d1 ;
4b4: e189 lsll #8,%d1 ;
4b6: 1228 0002 moveb %a0@(2),%d1 ;
4ba: e189 lsll #8,%d1 ;
4bc: 1228 0003 moveb %a0@(3),%d1 ;
4c0: 5888 addql #4,%a0 ;
4c2: 2241 moveal %d1,%a1 ;
4c4: 12d8 moveb %a0@+,%a1@+ ;
4c6: 51c8 fffc dbf %d0,0x4c4 ;
4ca: 0c10 0045 cmpib #69,%a0@ ;
4ce: 66b4 bnes 0x484 ;
4d0: 4e75 rts ;\