aboutsummaryrefslogtreecommitdiffstats
path: root/include/stddef62.inc
diff options
context:
space:
mode:
Diffstat (limited to 'include/stddef62.inc')
-rw-r--r--include/stddef62.inc147
1 files changed, 147 insertions, 0 deletions
diff --git a/include/stddef62.inc b/include/stddef62.inc
new file mode 100644
index 0000000..1bac205
--- /dev/null
+++ b/include/stddef62.inc
@@ -0,0 +1,147 @@
+ save
+ listing off ; kein Listing über diesen File
+
+;****************************************************************************
+;* *
+;* AS 1.39 - Datei STDDEF62.INC *
+;* *
+;* Sinn : enthält SFR- und Makrodefinitionen für die ST62xx-Prozessoren *
+;* *
+;* letzte Änderungen : 7. 8.1993 *
+;* 11. 9.1993 Meldung nur im 1.Pass *
+;* 21.11.1993 ROMWIN eingebaut *
+;* *
+;****************************************************************************
+
+ ifndef stddef62inc ; verhindert Mehrfacheinbindung
+
+stddef62inc equ 1
+
+ if (MOMCPU<>25104)&&(MOMCPU<>25109)&&(MOMCPU<>25120)&&(MOMCPU<>25125)
+ fatal "Falscher Prozessortyp eingestellt: nur ST6210, ST6215, ST6220 oder ST6225 erlaubt!"
+ endif
+
+ if MOMPASS=1
+ message "ST62xx-SFR-Definitionen (C) 1993 Alfred Arnold"
+ message "Zielprozessor: ST\{MOMCPU}"
+ endif
+
+;----------------------------------------------------------------------------
+; erstmal die Sachen, die es überall gibt :
+
+RegX SFR 80h ; Registeradressen (die kennt AS aber
+RegY SFR 81h ; auch schon intern, nur der Voll-
+RegV SFR 82h ; ständigkeit halber)
+RegW SFR 83h
+RegA SFR 0ffh
+
+RomBase SFR 40h ; Basisadresse ROM-Fenster (besser
+RDW SFR 0c9h ; aber das ASSUME-Feature nutzen)
+
+PA SFR 0c0h ; Port A
+DDRA SFR 0c4h
+OPTA SFR 0cch
+PB SFR 0c1h ; Port B
+DDRB SFR 0c5h
+OPTB SFR 0cdh
+
+IOPT SFR 0c8h ; Interrupt-Steuerung
+
+ADDATA SFR 0d0h ; A/D-Wandler
+ADCTRL SFR 0d1h
+
+TPSC SFR 0d2h ; Timer
+TDATA SFR 0d3h
+TSCR SFR 0d4h
+
+WDOG SFR 0d8h ; Watchdog
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; Port C nur mit den 28-Pinnern:
+
+ if (MOMCPU=6215H)||(MOMCPU=6225H)
+PC SFR 0c2h ; Port C
+DDRC SFR 0c6h
+OPTC SFR 0ceh
+ endif
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; hiermit versuche ich, etwas die Leerstellen im Befehlssatz aufzufangen.
+; das ist nur ein Angebot an Ihre Bequemlichkeit, niemand zwingt Sie, diese
+; Makros zu benutzen, wenn Sie es im Einzelfall kürzer können!
+
+; Addition/Subtraktion mit Carry: erster Operand muß A (Akku) sein!
+
+adc macro dst,src
+ jrnc NoCarry
+ inc dst
+NoCarry: add dst,src ; Rest normal addieren
+ endm
+
+sbc macro dst,src
+ jrnc NoCarry
+ dec dst
+NoCarry: sub dst,src
+ endm
+
+; ODER-Verknüpfung:
+; arbeitet nach der Regel von De Morgan: A OR B = /((/A) AND (/B))
+; verwendet W-Register
+; dst muß A (Akku) sein!
+
+or macro dst,src
+ com dst
+ ld w,dst
+ ld dst,src
+ com dst
+ and dst,w
+ com dst
+ endm
+
+; EXOR-Verknüpfung:
+; arbeitet nach dem Prinzip der 4 NAND-Gatter, muß also selber nicht auf
+; das OR-Makro zugreifen
+; verwendet V- und W-Register
+; dst muß A (Akku) sein!
+
+xor macro dst,src
+ ld v,dst ; Op1 retten
+ and dst,src ; Hilfsergebnis A NAND B bilden
+ com dst
+ ld w,dst ; in W retten
+ ld dst,v ; Op1 nochmal holen
+ and dst,w ; 1. Teilergebnis A NAND W bilden
+ com dst
+ ld v,dst ; in V retten
+ ld dst,src ; 2. Teilergebnis B NAND W bilden
+ and dst,w
+ com dst
+ and dst,v
+ com dst
+ endif
+ endm
+
+; rechts mit Carry rotieren
+; ok, das ist brute force, aber mir ist nix besseres eingefallen...
+; dst muß Akku (A) sein
+
+rrc macro dst
+ rept 7
+ rlc dst
+ endm
+ endm
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; Für diejenigen, die auf einmal den ROMWIN-Befehl vermissen, hier eine
+; kleine Überbrückungshilfe:
+
+romwin macro adr
+ assume rombase:adr>>6
+ endm
+
+;---------------------------------------------------------------------------
+
+ endif
+
+ restore ; wieder erlauben
+