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