new stuff
This commit is contained in:
parent
39e202881b
commit
518bf194a3
|
|
@ -0,0 +1,260 @@
|
||||||
|
Erstellung der WDC Firmware
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Firmware Version: 4.2
|
||||||
|
Dokument Version: 1.2 (2007-03-13)
|
||||||
|
Autor dieses Dokumentes: Oliver Lehmann
|
||||||
|
|
||||||
|
Dokumentenhistorie:
|
||||||
|
1.2
|
||||||
|
- Abschnitt ueber das generieren mit z80-asm unter UNIX hinzugefuegt
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1. Firmwaregenerierung auf dem PC
|
||||||
|
=================================
|
||||||
|
|
||||||
|
Die WDC Firmware ist auf dem PC unter UNIX o. komp. OS generierbar.
|
||||||
|
Der hier verwendete Assembler ist der Z80-ASM von
|
||||||
|
http://wwwhomes.uni-bielefeld.de/achim/z80-asm.html
|
||||||
|
|
||||||
|
Der dort bereitgestellte Assembler hat einen marginal unterschiedlichen
|
||||||
|
Befehlssatz. Daher ist es noetig, das ASM Sourcefile wdc.firm.s zu pat-
|
||||||
|
chen. Im Grunde werden nur alle Vorkommen der Datendefinitionssteueran-
|
||||||
|
weisungen "db" durch "defb", und "text" durch "defm" ersetzt. Ausserdem
|
||||||
|
versteht der Assembler keine Steueranweisungen zur Programmeinteilung
|
||||||
|
wie "begin" oder "end", oder Steueranweisungen fuer Assemblerlisting
|
||||||
|
wie "eject". Diese Steueranweisungen wurden ersatzlos entfernt.
|
||||||
|
|
||||||
|
1.1. Erzeugen der Firmware
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Nachdem der Assembler compiliert und installiert ist, wird die Firmware
|
||||||
|
gepatcht:
|
||||||
|
|
||||||
|
patch -p0 < z80-asm.patch
|
||||||
|
|
||||||
|
Im Anschluss daran wird die Sourcedatei assembliert:
|
||||||
|
|
||||||
|
z80-asm wdc.firm.s wdc.firm.o
|
||||||
|
|
||||||
|
Nun muss der durch den z80-asm vorgestellte Header verworfen werden:
|
||||||
|
|
||||||
|
dd if=wdc.firm.o of=wdc.firm bs=1 skip=10
|
||||||
|
|
||||||
|
Jetzt enthaellt die Datei "firmware" die WDC Firmware, welche noch
|
||||||
|
gesplittet werden muss:
|
||||||
|
|
||||||
|
dd if=wdc.firm of=WDC_1_4.2 bs=1 count=4096 >&/dev/null
|
||||||
|
dd if=wdc.firm of=WDC_2_4.2 bs=1 skip=4096 >&/dev/null
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2. Firmwaregenerierung auf dem P8000
|
||||||
|
====================================
|
||||||
|
|
||||||
|
2.1. Erzeugen der Firmware
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Um die Firmware erstellen zu koennen, muss die WEGA-Cross-Software
|
||||||
|
auf dem Computer installiert sein. Sobald die Software installiert
|
||||||
|
ist, kann die Firmware mittels Eingabe von "make" erzeugt werden:
|
||||||
|
|
||||||
|
#1 make
|
||||||
|
u80as -u -o wdc.firm.o wdc.firm.s
|
||||||
|
ld -o wdc.firm wdc.firm.o
|
||||||
|
strip -h wdc.firm
|
||||||
|
dd if=wdc.firm of=WDC_1_4.2 bs=1 count=4096 >&/dev/null
|
||||||
|
dd if=wdc.firm of=WDC_2_4.2 bs=1 skip=4096 >&/dev/null
|
||||||
|
#2
|
||||||
|
|
||||||
|
Die erzeugten Firmwaredateien lauten WDC_1_4.2 und WDC_2_4.2.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3. Programmieren der EPROMS
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Im ersten Schritt werden die beiden EPROMs programmiert und deren
|
||||||
|
Checksummen ermittelt. Diese Checksummen werden im Anschluss ne-
|
||||||
|
giert. Danach werden die ermittelten Checksummen an folgende Posi-
|
||||||
|
tionen des 2. EPROMs nachprogrammiert.
|
||||||
|
|
||||||
|
0FF8h - 0FF9h Checksumme 1. EPROM 0000h-0FFFh
|
||||||
|
0FFAh - 0FFBh Checksumme 1. EPROM 0000h-0FFFh negiert
|
||||||
|
0FFCh - 0FFDh Checksumme 2. EPROM 0000h-0FF7h
|
||||||
|
0FFEh - 0FFFh Checksumme 2. EPROM 0000h-0FF7h negiert
|
||||||
|
|
||||||
|
|
||||||
|
3.1. EPROM 1 programmieren
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Bitte starten Sie unter WEGA das Programm "pburn" und waehlen dort
|
||||||
|
aus:
|
||||||
|
|
||||||
|
select ?:p
|
||||||
|
|
||||||
|
|
||||||
|
p: programming prom
|
||||||
|
|
||||||
|
source filename [-w] [-D] [-B] [-os hex] : WDC_2_1.2 -B
|
||||||
|
destination promtype [-ol hex] : e2732
|
||||||
|
|
||||||
|
*** warning - is prom really e2732, not e2732a ?
|
||||||
|
continue ?y
|
||||||
|
|
||||||
|
ready to program :
|
||||||
|
source file : WDC_2_4.2 segment 0 start 0 end fff byte
|
||||||
|
destination promtyp : e2732 start 0 end fff byte ?(y/r/s/m/v/l/t/q)y
|
||||||
|
|
||||||
|
program file WDC_2_4.2 to prom e2732
|
||||||
|
|
||||||
|
crc_checksum: 2c43
|
||||||
|
|
||||||
|
Die ermittelte Checksumme (2C43) ist zu notieren.
|
||||||
|
|
||||||
|
|
||||||
|
3.2. EPROM 2 programmieren
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Bitte starten Sie unter WEGA das Programm "pburn" und waehlen dort
|
||||||
|
aus:
|
||||||
|
|
||||||
|
select ?:p
|
||||||
|
|
||||||
|
|
||||||
|
p: programming prom
|
||||||
|
|
||||||
|
source filename [-w] [-D] [-B] [-os hex] : WDC_2_4.2 -B
|
||||||
|
destination promtype [-ol hex] : e2732
|
||||||
|
|
||||||
|
*** warning - is prom really e2732, not e2732a ?
|
||||||
|
continue ?y
|
||||||
|
|
||||||
|
ready to program :
|
||||||
|
source file : WDC_2_4.2 segment 0 start 0 end fff byte
|
||||||
|
destination promtyp : e2732 start 0 end fff byte ?(y/r/s/m/v/l/t/q)y
|
||||||
|
|
||||||
|
program file WDC_2_4.2 to prom e2732
|
||||||
|
|
||||||
|
crc_checksum: 14bc
|
||||||
|
|
||||||
|
|
||||||
|
3.3. Checksumme EPROM 2 ermitteln
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Mir ist keine Moeglichkeit bekannt mittels "pburn" nur die Check-
|
||||||
|
summe eines Teils des EPROMs zu ermitteln. Aus diesem Grund muss
|
||||||
|
hier leider auf UDOS und "UPROG" zurueckgegriffen werden.
|
||||||
|
Nachdem sie WEGA ordnungsgemaess abgefahren haben starten sie bit-
|
||||||
|
te UDOS mittels der UDOS Vertriebsdiskette. Sobald sich UDOS mit
|
||||||
|
seinem Prompt meldet ist "UPROG" zu starten.
|
||||||
|
|
||||||
|
#T E2732 N=FF8
|
||||||
|
READY TO READ?y
|
||||||
|
PROM CRC: 2C03
|
||||||
|
PROM NOT ERASED
|
||||||
|
|
||||||
|
Die ermittelte Checksumme (2C03) ist zu notieren
|
||||||
|
|
||||||
|
|
||||||
|
3.4. Checksummen negieren
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Die Negierung der aus 2.1. und 2.3. ermittelten Checksummen kann
|
||||||
|
zum Beispiel mittels dem Rechenprogramm "bc" unter WEGA vorgenom-
|
||||||
|
men werden.
|
||||||
|
|
||||||
|
#1 bc
|
||||||
|
obase=16
|
||||||
|
ibase=16
|
||||||
|
FFFF-a
|
||||||
|
b
|
||||||
|
|
||||||
|
- fuer a ist die zu negierende Checksumme einzusetzen
|
||||||
|
- b ist die zu a gehoerige negierte Checksumme
|
||||||
|
|
||||||
|
Beispiel:
|
||||||
|
|
||||||
|
#1 bc
|
||||||
|
obase=16
|
||||||
|
ibase=16
|
||||||
|
FFFF-2C43
|
||||||
|
D3BC
|
||||||
|
|
||||||
|
Beide negierten Checksummen sind zu notieren.
|
||||||
|
|
||||||
|
3.5. Checksummen nachprogrammieren
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
Nun sind die Checksummen aus 2.1, 2.3. und 2.4 nachzuprogrammie-
|
||||||
|
ren. Dabei ist im 2. EPROM ab 0FF8h die Checksumme aus 2.1., deren
|
||||||
|
Negat aus 2.4., die Checksumme aus 2.3. und deren Negat aus 2.4.
|
||||||
|
zu programmieren (siehe auch Abschn. 2.).
|
||||||
|
|
||||||
|
Beispiel:
|
||||||
|
|
||||||
|
Abschn. Checksumme
|
||||||
|
2.1. 2C43
|
||||||
|
2.4. (aus 2.1.) D3BC
|
||||||
|
2.3 2C03
|
||||||
|
2.4. (aus 2.3.) D3FC
|
||||||
|
|
||||||
|
|
||||||
|
3.5.1. Nachprogrammieren mittels "UPROG" unter UDOS
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
Sollten Sie sich aufgrund von Abschn. 2.4. noch unter UDOS befin-
|
||||||
|
den, koennen sie hier ohne einen Wechsel zu WEGA die Checksummen
|
||||||
|
mittels "UPROG" nachprogrammieren.
|
||||||
|
|
||||||
|
#B E2732
|
||||||
|
ADDRESS TO MODIFY?FF8
|
||||||
|
0FF8 FF 2C
|
||||||
|
0FF9 FF 43
|
||||||
|
0FFA FF D3
|
||||||
|
0FFB FF BC
|
||||||
|
0FFC FF 2C
|
||||||
|
0FFD FF 03
|
||||||
|
0FFE FF D3
|
||||||
|
0FFF FF FC
|
||||||
|
ADDRESS TO MODIFY?q
|
||||||
|
|
||||||
|
3.5.2. Nachprogrammieren mittels "pburn" unter WEGA
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
Befinden sie sich unter WEGA, und wollen dort die Checksummen
|
||||||
|
nachprogrammieren, starten sie bitte "pburn".
|
||||||
|
|
||||||
|
select ?:b
|
||||||
|
|
||||||
|
|
||||||
|
b: bytemode prom
|
||||||
|
|
||||||
|
source promtype : e2732
|
||||||
|
|
||||||
|
*** warning - is prom really e2732, not e2732a ?
|
||||||
|
continue ?y
|
||||||
|
|
||||||
|
ready to bytemode :
|
||||||
|
source promtyp : e2732 ?(y/q)y
|
||||||
|
|
||||||
|
byteprogram prom e2732
|
||||||
|
address to program ?FF8
|
||||||
|
0ff8: ff 2C
|
||||||
|
0ff9: ff 43
|
||||||
|
0ffa: ff D3
|
||||||
|
0ffb: ff BC
|
||||||
|
0ffc: ff 2C
|
||||||
|
0ffd: ff 03
|
||||||
|
0ffe: ff D3
|
||||||
|
0fff: ff FC
|
||||||
|
|
||||||
|
*** the specified address out of address range
|
||||||
|
address to program ?q
|
||||||
|
|
||||||
|
crc_checksum: 5d66
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Die Erstellung der WDC Firmware ist hiermit abgeschlossen.
|
||||||
Loading…
Reference in New Issue