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.
