406 lines
19 KiB
PHP
406 lines
19 KiB
PHP
save
|
|
listing off ; kein Listing über diesen File
|
|
|
|
;****************************************************************************
|
|
;* *
|
|
;* AS 1.41 - Datei STDDEFXA.INC *
|
|
;* *
|
|
;* Sinn : enthält SFR- und Bitdefinitionen für die XA-Prozessoren *
|
|
;* *
|
|
;* letzte Änderungen : 29. 6.1996 *
|
|
;* 18. 8.1998 bei P_51, F0_51 und F1_51 den Postfix *
|
|
;* wieder entfernt, da diese sich mit kei- *
|
|
;* nen XA-Bits namensmaessig "beissen" *
|
|
;* *
|
|
;****************************************************************************
|
|
|
|
ifndef stddefxainc ; verhindert Mehrfacheinbindung
|
|
|
|
stddefxainc equ 1
|
|
|
|
if (MOMCPUNAME<>"XAG3")&&(MOMCPUNAME<>"XAG1")&&(MOMCPUNAME<>"XAG1")
|
|
fatal "Falscher Prozessortyp eingestellt: nur XAG1, XAG2 oder XAG3 erlaubt!"
|
|
endif
|
|
|
|
|
|
if MOMPASS=1
|
|
message "Philips-XA-SFR-Definitionen (C) 1996 Alfred Arnold"
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Prozessorkern
|
|
|
|
cs port 443h ; Code-Segment
|
|
ds port 441h ; Daten-Segment
|
|
es port 442h ; Extra-Segment
|
|
|
|
ssel port 403h ; Auswahl-Bits, ob [R0..R6] mit ES/DS arbeiten
|
|
r0seg bit ssel.0
|
|
r1seg bit ssel.1
|
|
r2seg bit ssel.2
|
|
r3seg bit ssel.3
|
|
r4seg bit ssel.4
|
|
r5seg bit ssel.5
|
|
r6seg bit ssel.6
|
|
eswen bit ssel.7 ; Schreibzugriffe über ES erlauben/sperren (Usermode)
|
|
|
|
pswl port 400h ; Prozessorstatus(L):
|
|
z bit pswl.0 ; Zero-Flag
|
|
n bit pswl.1 ; Negativ-Flag
|
|
v bit pswl.2 ; Overflow-Flag
|
|
ac bit pswl.6 ; Hilfs-Carry (für DAA)
|
|
c bit pswl.7 ; Carry
|
|
|
|
pswh port 401h ; Prozessorstatus(H):
|
|
im0 bit pswh.0 ; Interrupt-Maske Bit 0
|
|
im1 bit pswh.1 ; Interrupt-Maske Bit 1
|
|
im2 bit pswh.2 ; Interrupt-Maske Bit 2
|
|
im3 bit pswh.3 ; Interrupt-Maske Bit 3
|
|
rs0 bit pswh.4 ; Register-Bank-Auswahl Bit 0
|
|
rs1 bit pswh.5 ; Register-Bank-Auswahl Bit 1
|
|
tm bit pswh.6 ; CPU im Einzelschritt-Modus
|
|
sm bit pswh.7 ; CPU im Supervisor-Mode
|
|
|
|
psw51 port 402h ; emuliertes 8051-PSW:
|
|
p bit psw51.0 ; Paritätsbit
|
|
f1 bit psw51.1 ; User-Flag 1
|
|
v_51 bit psw51.2 ; Overflow-Flag
|
|
rs0_51 bit psw51.3 ; Register-Bank-Auswahl Bit 0
|
|
rs1_51 bit psw51.4 ; Register-Bank-Auswahl Bit 1
|
|
f0 bit psw51.5 ; User-Flag 0
|
|
ac_51 bit psw51.6 ; Hilfs-Carry (für DAA)
|
|
c_51 bit psw51.7 ; Carry
|
|
|
|
pcon port 404h ; Steuerung Power-Modi
|
|
idl bit pcon.0 ; Idle-Modus aktivieren
|
|
pd bit pcon.1 ; Powerdown-Modus aktivieren
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Chip-Konfiguration
|
|
|
|
scr port 440h ; Systemkonfiguration
|
|
;pz bit scr.0 ; Adreßräume auf 64K begrenzen
|
|
;cm bit scr.1 ; 8051-kompatibles Registermapping
|
|
;pt0 bit scr.2 ; Vorteiler-Einstellung
|
|
;pt1 bit scr.3
|
|
|
|
bcr port 46ah ; Bus-Konfiguration
|
|
;bc0 bit bcr.0 ; Einstellung 12/16/20/24 Adreßleitungen
|
|
;bc1 bit bcr.1
|
|
;bc2 bit bcr.2 ; Einstellung 8/16 Datenleitungen
|
|
;busd bit bcr.3 ; Bus komplett abschalten
|
|
;waitd bit bcr.4 ; WAIT-Pin ignorieren
|
|
|
|
btrl port 468h ; Einstellung Bus-Timing(L)
|
|
;dra0 bit btrl.0 ; Gesamtlänge Lesezyklus
|
|
;dra1 bit btrl.1
|
|
;dr0 bit btrl.2 ; Länge Lesezyklus ohne ALE
|
|
;dr1 bit btrl.3
|
|
;dwa0 bit btrl.4 ; Gesamtlänge Schreibzyklus
|
|
;dwa1 bit btrl.5
|
|
;dw0 bit btrl.6 ; Länge Schreibzyklus ohne ALE
|
|
;dw1 bit btrl.7
|
|
|
|
btrh port 469h ; Einstellung Bus-Timing(L)
|
|
;cra0 bit btrl.0 ; Gesamtlänge Codelesezyklus
|
|
;cra1 bit btrl.1
|
|
;cr0 bit btrl.2 ; Länge Codelesezyklus ohne ALE
|
|
;cr1 bit btrl.3
|
|
;alew bit btrl.5 ; Länge ALE-Puls
|
|
;wm0 bit btrl.6 ; Länge WR-Puls
|
|
;wm1 bit btrl.7
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Interrupt-Steuerung
|
|
|
|
iel port 426h ; Interruptfreigabe(L):
|
|
ex0 bit iel.0 ; externer Interrupt 0
|
|
et0 bit iel.1 ; Timer 0
|
|
ex1 bit iel.2 ; externer Interrupt 1
|
|
et1 bit iel.3 ; Timer 1
|
|
et2 bit iel.4 ; Timer 2
|
|
ea bit iel.7 ; global
|
|
|
|
ieh port 427h ; Interruptfreigabe(H):
|
|
eri0 bit ieh.0 ; Empfang UART0
|
|
eti0 bit ieh.1 ; Versand UART0
|
|
eri1 bit ieh.2 ; Empfang UART1
|
|
eti1 bit ieh.3 ; Versand UART1
|
|
|
|
ipa0 port 4a0h ; Interruptprioritäten(0):
|
|
;px0 bit ipa0.0 ; externer Interrupt 0 (4 Bits)
|
|
;pt0 bit ipa0.4 ; Timer 0 (4 Bits)
|
|
|
|
ipa1 port 4a1h ; Interruptprioritäten(1):
|
|
;px1 bit ipa1.0 ; externer Interrupt 1 (4 Bits)
|
|
;pt1 bit ipa1.4 ; Timer 1 (4 Bits)
|
|
|
|
ipa2 port 4a2h ; Interruptprioritäten(2):
|
|
;pt2 bit ipa1.0 ; Timer 2 (4 Bits)
|
|
|
|
ipa4 port 4a4h ; Interruptprioritäten(4):
|
|
;pri0 bit ipa4.0 ; Empfang UART0 (4 Bits)
|
|
;pti0 bit ipa4.4 ; Versand UART0 (4 Bits)
|
|
|
|
ipa5 port 4a5h ; Interruptprioritäten(4):
|
|
;pri1 bit ipa5.0 ; Empfang UART1 (4 Bits)
|
|
;pti1 bit ipa5.4 ; Versand UART1 (4 Bits)
|
|
|
|
swe port 403h ; Freigabe Software-Interrupts
|
|
swe1 bit swe.0
|
|
swe2 bit swe.1
|
|
swe3 bit swe.2
|
|
swe4 bit swe.3
|
|
swe5 bit swe.4
|
|
swe6 bit swe.5
|
|
swe7 bit swe.6
|
|
|
|
swr port 42ah ; Auslösung Software-Interrupts
|
|
swr1 bit swr.0
|
|
swr2 bit swr.1
|
|
swr3 bit swr.2
|
|
swr4 bit swr.3
|
|
swr5 bit swr.4
|
|
swr6 bit swr.5
|
|
swr7 bit swr.6
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Ports
|
|
|
|
p0 port 430h ; Datenregister Port 0
|
|
ad0 bit p0.0 ; Datenbit 0/Adreßbit 4
|
|
ad1 bit p0.1 ; Datenbit 1/Adreßbit 5
|
|
ad2 bit p0.2 ; Datenbit 2/Adreßbit 6
|
|
ad3 bit p0.3 ; Datenbit 3/Adreßbit 7
|
|
ad4 bit p0.4 ; Datenbit 4/Adreßbit 8
|
|
ad5 bit p0.5 ; Datenbit 5/Adreßbit 9
|
|
ad6 bit p0.6 ; Datenbit 6/Adreßbit 10
|
|
ad7 bit p0.7 ; Datenbit 7/Adreßbit 11
|
|
|
|
p1 port 431h ; Datenregister Port 1
|
|
a0 bit p1.0 ; Adreßleitung 0 (8-Bit-Modus)
|
|
wrh bit p1.0 ; Schreibimpuls D8-D15 (16-Bit-Modus)
|
|
a1 bit p1.1 ; Adreßleitung 1
|
|
a2 bit p1.2 ; Adreßleitung 2
|
|
a3 bit p1.3 ; Adreßleitung 3
|
|
rxd1 bit p1.4 ; Empfangsleitung UART1
|
|
txd1 bit p1.5 ; Sendeleitung UART1
|
|
t2 bit p1.6 ; Timer 2 Ein/Ausgang
|
|
t2ex bit p1.7 ; Trigger Timer 2
|
|
|
|
p2 port 432h ; Datenregister Port 2
|
|
ad8 bit p2.0 ; Datenbit 8/Adreßbit 12
|
|
ad9 bit p2.1 ; Datenbit 9/Adreßbit 13
|
|
ad10 bit p2.2 ; Datenbit 10/Adreßbit 14
|
|
ad11 bit p2.3 ; Datenbit 11/Adreßbit 15
|
|
ad12 bit p2.4 ; Datenbit 12/Adreßbit 16
|
|
ad13 bit p2.5 ; Datenbit 13/Adreßbit 17
|
|
ad14 bit p2.6 ; Datenbit 14/Adreßbit 18
|
|
ad15 bit p2.7 ; Datenbit 15/Adreßbit 19
|
|
|
|
p3 port 433h ; Datenregister Port 3
|
|
rxd0 bit p3.0 ; Empfangsleitung UART0
|
|
txd0 bit p3.1 ; Sendeleitung UART0
|
|
int0 bit p3.2 ; externer Interrupt 0
|
|
int1 bit p3.3 ; externer Interrupt 1
|
|
t0 bit p3.4 ; Timer 0 Ein/Ausgang
|
|
t1 bit p3.5 ; Timer 1 Ein/Ausgang
|
|
wr bit p3.6 ; Schreibimpuls D0-7
|
|
rd bit p3.7 ; Leseimpuls D0-15
|
|
|
|
p0cfga port 470h ; Konfigurationsbits A für Port 0
|
|
p1cfga port 471h ; Konfigurationsbits A für Port 1
|
|
p2cfga port 472h ; Konfigurationsbits A für Port 2
|
|
p3cfga port 473h ; Konfigurationsbits A für Port 3
|
|
|
|
p0cfgb port 4f0h ; Konfigurationsbits B für Port 0
|
|
p1cfgb port 4f1h ; Konfigurationsbits B für Port 1
|
|
p2cfgb port 4f2h ; Konfigurationsbits B für Port 2
|
|
p3cfgb port 4f3h ; Konfigurationsbits B für Port 3
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Timer
|
|
|
|
tl0 port 450h ; Zählregister Timer 0
|
|
th0 port 451h
|
|
rtl0 port 454h ; Reload Timer 0
|
|
rth0 port 455h
|
|
|
|
tl1 port 452h ; Zählregister Timer 1
|
|
th1 port 453h
|
|
rtl1 port 456h ; Reload Timer 1
|
|
rth1 port 457h
|
|
|
|
tmod port 45ch ; Modusregister Timer 0/1
|
|
;t0_m0 bit tmod.0 ; Betriebsart Timer 0
|
|
;t0_m1 bit tmod.1
|
|
;ct_t0 bit tmod.2 ; Timer 0 als Timer oder Zähler
|
|
;t0_gate bit tmod.3 ; Freigabe Timer 0
|
|
;t1_m0 bit tmod.4 ; Betriebsart Timer 1
|
|
;t1_m1 bit tmod.5
|
|
;ct_t1 bit tmod.6 ; Timer 1 als Timer oder Zähler
|
|
;t1_gate bit tmod.7 ; Freigabe Timer 1
|
|
|
|
tcon port 410h ; Timer-Steuerregister 0/1
|
|
it0 bit tcon.0 ; Flanken/Zustandstriggerung Interrupt 0
|
|
ie0 bit tcon.1 ; Flankendetektor Interrupt 0
|
|
it1 bit tcon.2 ; Flanken/Zustandstriggerung Interrupt 1
|
|
ie1 bit tcon.3 ; Flankendetektor Interrupt 1
|
|
tr0 bit tcon.4 ; Timer 0 einschalten/stoppen
|
|
tf0 bit tcon.5 ; Überlauf Timer 0 ?
|
|
tr1 bit tcon.6 ; Timer 1 einschalten/stoppen
|
|
tf1 bit tcon.7 ; Überlauf Timer 1 ?
|
|
|
|
tstat port 411h ; Timer-Status 0/1
|
|
t0oe bit tstat.0 ; Takt von Timer 0 an T0 ausgeben
|
|
t1oe bit tstat.1 ; Takt von Timer 1 an T1 ausgeben
|
|
|
|
tl2 port 458h ; Zählregister Timer 2
|
|
th2 port 459h
|
|
|
|
t2capl port 45ah ; Fangwert Timer 2
|
|
t2caph port 45bh
|
|
|
|
t2mod port 419h ; Modus Timer 2
|
|
dcen bit t2mod.0 ; Zählrichtung Timer 2 auf/durch T2EX bestimmt
|
|
t2oe bit t2mod.1 ; Takt von Timer 2 an T2 ausgeben
|
|
tclk1 bit t2mod.4 ; UART1 benutzt Timer2 statt Timer 1 zum Senden
|
|
rclk1 bit t2mod.5 ; UART1 benutzt Timer2 statt Timer 1 zum Empfangen
|
|
|
|
t2con port 418h ; Timer-Steurregister 2
|
|
cp_rl2 bit t2con.0 ; Timer 2 Fang/Neuladen ?
|
|
ct_t2 bit t2con.1 ; Timer 2 als Timer oder Zähler
|
|
tr2 bit t2con.2 ; Timer 2 einschalten/stoppen
|
|
exen2 bit t2con.3 ; Capture/Reload über T2EX erlauben
|
|
tclk0 bit t2con.4 ; UART0 benutzt Timer2 statt Timer 1 zum Senden
|
|
rclk0 bit t2con.5 ; UART0 benutzt Timer2 statt Timer 1 zum Empfangen
|
|
exf2 bit t2con.6 ; Capture/Reload aufgetreten ?
|
|
tf2 bit t2con.7 ; Überlauf Timer 2 ?
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Watchdog
|
|
|
|
wdcon port 41fh ; Konfiguration Watchdog
|
|
wdtof bit wdcon.1 ; Timeout aufgetreten ?
|
|
wdrun bit wdcon.2 ; Watchdog einschalten
|
|
pre0 bit wdcon.5 ; Vorteiler
|
|
pre1 bit wdcon.6
|
|
pre2 bit wdcon.7
|
|
|
|
wdl port 45fh ; Reload-Wert
|
|
|
|
wfeed1 port 45dh ; Rücksetzregister 1 (a5h)
|
|
wfeed2 port 45eh ; Rücksetzregister 2 (5ah)
|
|
|
|
;----------------------------------------------------------------------------
|
|
; serielle Ports
|
|
|
|
s0buf port 460h ; Datenregister UART0
|
|
|
|
s0addr port 461h ; Slave-Adresse UART0
|
|
s0aden port 462h ; Adreßmaske UART0
|
|
|
|
s0stat port 421h ; Status UART0
|
|
stint0 bit s0stat.0 ; Interruptfreigabe UART0
|
|
oe0 bit s0stat.1 ; Empfängerüberlauf UART0
|
|
br0 bit s0stat.2 ; Break auf UART0 empfangen?
|
|
fe0 bit s0stat.3 ; kein gültiges Stopbit auf UART0 ?
|
|
|
|
s0con port 420h ; Steuerung UART0
|
|
ri_0 bit s0con.0 ; Zeichen auf UART0 empfangen ?
|
|
ti_0 bit s0con.1 ; Zeichen auf UART0 verschickt ?
|
|
rb8_0 bit s0con.2 ; auf UART0 empfangenes, 9. Bit
|
|
tb8_0 bit s0con.3 ; auf UART0 verschicktes, 9. Bit
|
|
ren_0 bit s0con.4 ; Empfänger UART0 freigeben
|
|
sm2_0 bit s0con.5 ; Multiprozessormodus auf UART0 freigeben
|
|
sm1_0 bit s0con.6 ; Moduseinstellung UART0
|
|
sm0_0 bit s0con.7
|
|
|
|
s1stat port 421h ; Status UART1
|
|
stint1 bit s1stat.0 ; Interruptfreigabe UART1
|
|
oe1 bit s1stat.1 ; Empfängerüberlauf UART1
|
|
br1 bit s1stat.2 ; Break auf UART1 empfangen?
|
|
fe1 bit s1stat.3 ; kein gültiges Stopbit auf UART1 ?
|
|
|
|
s1con port 424h ; Steuerung UART1
|
|
ri_1 bit s1con.0 ; Zeichen auf UART1 empfangen ?
|
|
ti_1 bit s1con.1 ; Zeichen auf UART1 verschickt ?
|
|
rb8_1 bit s1con.2 ; auf UART1 empfangenes, 9. Bit
|
|
tb8_1 bit s1con.3 ; auf UART1 verschicktes, 9. Bit
|
|
ren_1 bit s1con.4 ; Empfänger UART1 freigeben
|
|
sm2_1 bit s1con.5 ; Multiprozessormodus auf UART1 freigeben
|
|
sm1_1 bit s1con.6 ; Moduseinstellung UART1
|
|
sm0_1 bit s1con.7
|
|
|
|
s1buf port 464h ; Datenregister UART1
|
|
|
|
s1addr port 465h ; Slave-Adresse UART1
|
|
s1aden port 466h ; Adreßmaske UART1
|
|
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Vektoren
|
|
|
|
vec_reset label 0000h ; Resetadresse
|
|
vec_bkpt label 0004h ; Breakpoint-Befehl
|
|
vec_trace label 0008h ; Einzelschrittverfolgung
|
|
vec_stkover label 000ch ; Stapelüberlauf
|
|
vec_divzero label 0010h ; Division durch 0
|
|
vec_reti label 0014h ; Privilegverletzung (RETI im User-Mode)
|
|
vec_trap0 label 0040h ; TRAP 0
|
|
vec_trap1 label 0044h ; TRAP 1
|
|
vec_trap2 label 0048h ; TRAP 2
|
|
vec_trap3 label 004ch ; TRAP 3
|
|
vec_trap4 label 0050h ; TRAP 4
|
|
vec_trap5 label 0054h ; TRAP 5
|
|
vec_trap6 label 0058h ; TRAP 6
|
|
vec_trap7 label 005ch ; TRAP 7
|
|
vec_trap8 label 0060h ; TRAP 8
|
|
vec_trap9 label 0064h ; TRAP 9
|
|
vec_trap10 label 0068h ; TRAP 10
|
|
vec_trap11 label 006ch ; TRAP 11
|
|
vec_trap12 label 0070h ; TRAP 12
|
|
vec_trap13 label 0074h ; TRAP 13
|
|
vec_trap14 label 0078h ; TRAP 14
|
|
vec_trap15 label 007ch ; TRAP 15
|
|
|
|
vec_ie0 label 0080h ; externer Interrupt 0
|
|
vec_tf0 label 0084h ; Interrupt durch Timer 0
|
|
vec_ie1 label 0088h ; externer Interrupt 1
|
|
vec_tf1 label 008ch ; Interrupt durch Timer 1
|
|
vec_tf2 label 0090h ; Interrupt durch Timer 2
|
|
vec_ri0 label 00a0h ; Empfang auf UART0
|
|
vec_ti0 label 00a4h ; Sendung auf UART0
|
|
vec_ri1 label 00a8h ; Empfang auf UART1
|
|
vec_ti1 label 00ach ; Sendung auf UART1
|
|
|
|
vec_swr1 label 0100h ; Software-Interrupt 1
|
|
vec_swr2 label 0104h ; Software-Interrupt 2
|
|
vec_swr3 label 0108h ; Software-Interrupt 3
|
|
vec_swr4 label 010ch ; Software-Interrupt 4
|
|
vec_swr5 label 0110h ; Software-Interrupt 5
|
|
vec_swr6 label 0114h ; Software-Interrupt 6
|
|
vec_swr7 label 0118h ; Software-Interrupt 7
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Speicheradressen
|
|
|
|
irom label 0 ; Beginn internes ROM
|
|
switch MOMCPUNAME ; Ende internes ROM
|
|
case "XAG3"
|
|
iromend label 7fffh ; XA-G3: 32K ROM
|
|
case "XAG2"
|
|
iromend label 3fffh ; XA-G2: 16K ROM
|
|
case "XAG1"
|
|
iromend label 1fffh ; XA-G1: 8K ROM
|
|
endcase
|
|
|
|
iram equ 0,data ; Beginn internes RAM
|
|
iramend equ 1ffh,data ; Ende internes RAM: immer 512 Byte
|
|
|
|
endif
|
|
|
|
restore ; wieder erlauben
|
|
|
|
|