From 333b605b2afd472b823aeda0adf0e8b1ea9843c0 Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Mon, 27 May 2019 02:41:51 +0100 Subject: initial commit from asl-1.41r8.tar.gz --- include/stddefxa.inc | 405 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100644 include/stddefxa.inc (limited to 'include/stddefxa.inc') diff --git a/include/stddefxa.inc b/include/stddefxa.inc new file mode 100644 index 0000000..e13dd10 --- /dev/null +++ b/include/stddefxa.inc @@ -0,0 +1,405 @@ + 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 + + -- cgit v1.2.3