Mac65 Macros
von Bernd » Mi 3. Dez 2008, 23:51Hallo zusammen,
ist zwar schon einige Zeit her aber dieses Macro für den M65 möchte ich noch mal vorstellen.
Im File Kernel.M65 befindet sich eine aussergewöhliche zwei Bytes Vergleichsfunktion. Aufgerufen wird es wie folgt im Hauptprogramm:
50 DEQCMP QQPASS,QQPASS+2
60 Bne DaEntlang
Hier die Makros dazu. Der Vergleich von low und high Bytes über STA QQCFLG, PLA, AND QQCFLG, PHA, PLP müsste jedem Programmiererherz höher schlagen lassen.
1108 .MACRO DEQCMP
1109 DPOKE QQCMP,%1
1110 DPOKE QQCMP+2,%2
1111 LDA QQCMP
1112 CMP QQCMP+2
1113 PHP
1114 LDA QQCMP+1
1115 CMP QQCMP+3
1116 PHP
1117 PLA
1118 STA QQCFLG
1119 PLA
1120 AND QQCFLG
1121 PHA
1122 PLP
1123 .ENDM
6028 .MACRO DPOKE
6029 .IF [%2]>256
6030 LDA %2
6031 STA %1
6032 LDA %2+1
6033 STA %1+1
6034 .ELSE
6035 LDA #%2
6036 STA %1
6037 LDA #0
6038 STA %1+1
6039 .ENDIF
6040 .ENDM
Die Jungs hatten was drauf,
Bernd
PS:@Dietrich - wie war das nochmal mit dem einfachen Vergleichen zweier 16bit Variablen?
ist zwar schon einige Zeit her aber dieses Macro für den M65 möchte ich noch mal vorstellen.
Im File Kernel.M65 befindet sich eine aussergewöhliche zwei Bytes Vergleichsfunktion. Aufgerufen wird es wie folgt im Hauptprogramm:
50 DEQCMP QQPASS,QQPASS+2
60 Bne DaEntlang
Hier die Makros dazu. Der Vergleich von low und high Bytes über STA QQCFLG, PLA, AND QQCFLG, PHA, PLP müsste jedem Programmiererherz höher schlagen lassen.
1108 .MACRO DEQCMP
1109 DPOKE QQCMP,%1
1110 DPOKE QQCMP+2,%2
1111 LDA QQCMP
1112 CMP QQCMP+2
1113 PHP
1114 LDA QQCMP+1
1115 CMP QQCMP+3
1116 PHP
1117 PLA
1118 STA QQCFLG
1119 PLA
1120 AND QQCFLG
1121 PHA
1122 PLP
1123 .ENDM
6028 .MACRO DPOKE
6029 .IF [%2]>256
6030 LDA %2
6031 STA %1
6032 LDA %2+1
6033 STA %1+1
6034 .ELSE
6035 LDA #%2
6036 STA %1
6037 LDA #0
6038 STA %1+1
6039 .ENDIF
6040 .ENDM
Die Jungs hatten was drauf,
Bernd
PS:@Dietrich - wie war das nochmal mit dem einfachen Vergleichen zweier 16bit Variablen?