]> git.sur5r.net Git - cc65/commitdiff
Renamed smc.mac to smc.inc.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 21 Feb 2012 20:05:36 +0000 (20:05 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 21 Feb 2012 20:05:36 +0000 (20:05 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5537 b7a2c559-68d2-44c3-8de9-860c34a00d81

asminc/smc.inc [new file with mode: 0644]
asminc/smc.mac [deleted file]
doc/smc.sgml

diff --git a/asminc/smc.inc b/asminc/smc.inc
new file mode 100644 (file)
index 0000000..42dcb10
--- /dev/null
@@ -0,0 +1,249 @@
+; smc.mac\r
+; ca65 Macro-Pack for Self Modifying Code (SMC)\r
+;\r
+; (c) Christian Krüger, latest change: 09-Nov-2011\r
+;\r
+; This software is provided 'as-is', without any expressed or implied\r
+; warranty.  In no event will the authors be held liable for any damages\r
+; arising from the use of this software.\r
+;\r
+; Permission is granted to anyone to use this software for any purpose,\r
+; including commercial applications, and to alter it and redistribute it\r
+; freely, subject to the following restrictions:\r
+;\r
+; 1. The origin of this software must not be misrepresented; you must not\r
+;    claim that you wrote the original software. If you use this software\r
+;    in a product, an acknowledgment in the product documentation would be\r
+;    appreciated but is not required.\r
+; 2. Altered source versions must be plainly marked as such, and must not\r
+;    be misrepresented as being the original software.\r
+; 3. This notice may not be removed or altered from any source\r
+;    distribution.\r
+;\r
+\r
+.define _SMCDesignator .mid(0, .tcount(label) - 1, label) .ident(.concat(.string(.right(1, label)), "_SMC"))\r
+.define _SMCAlias .mid(0, .tcount(alias) - 1, alias) .ident(.concat(.string(.right(1, alias)), "_SMC"))\r
+.define SMC_AbsAdr      $FADE\r
+.define SMC_ZpAdr               $00\r
+.define SMC_Opcode      nop\r
+.define SMC_Value               $42\r
+\r
+.macro SMC_OperateOnValue opcode, label\r
+        opcode _SMCDesignator+1\r
+.endmacro\r
+\r
+.macro SMC_OperateOnLowByte opcode, label\r
+        SMC_OperateOnValue opcode, label\r
+.endmacro\r
+\r
+.macro SMC_OperateOnHighByte opcode, label\r
+        opcode _SMCDesignator + 2\r
+.endmacro\r
+\r
+.macro SMC_Import alias\r
+.import _SMCAlias\r
+.endmacro\r
+\r
+.macro SMC_Export alias, label\r
+.export _SMCAlias := _SMCDesignator\r
+.endmacro\r
+\r
+.macro  SMC    label, statement\r
+_SMCDesignator: statement\r
+.endmacro\r
+\r
+.macro SMC_TransferOpcode       label, opcode, register\r
+.if .paramcount = 2 .or .match ({register}, a)\r
+                        lda #opcode\r
+                        sta _SMCDesignator\r
+.elseif .match ({register}, x)\r
+                        ldx #opcode\r
+                        stx _SMCDesignator\r
+.elseif .match ({register}, y)\r
+                        ldy #opcode\r
+                        sty _SMCDesignator\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_LoadOpcode   label, register\r
+.if .paramcount = 1 .or .match ({register}, a)\r
+                        lda _SMCDesignator\r
+.elseif .match ({register}, x)\r
+                        ldx _SMCDesignator\r
+.elseif .match ({register}, y)\r
+                        ldy _SMCDesignator\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_StoreOpcode  label, register\r
+.if .paramcount = 1 .or .match ({register}, a)\r
+                        sta _SMCDesignator\r
+.elseif .match ({register}, x)\r
+                        stx _SMCDesignator\r
+.elseif .match ({register}, y)\r
+                        sty _SMCDesignator\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_ChangeBranch         label, destination, register\r
+.if .paramcount = 2 .or .match ({register}, a)\r
+                        lda #(destination - _SMCDesignator -2)\r
+                        sta _SMCDesignator+1\r
+.elseif .match ({register}, x)\r
+                        ldx #(destination - _SMCDesignator - 2)\r
+                        stx _SMCDesignator+1\r
+.elseif .match ({register}, y)\r
+                        ldy #(destination - _SMCDesignator - 2)\r
+                        sty _SMCDesignator+1\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_TransferValue        label, value, register\r
+.if .paramcount = 2 .or .match ({register}, a)\r
+                        lda value\r
+                        sta _SMCDesignator+1\r
+.elseif .match ({register}, x)\r
+                        ldx value\r
+                        stx _SMCDesignator+1\r
+.elseif .match ({register}, y)\r
+                        ldy value\r
+                        sty _SMCDesignator+1\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_LoadValue    label, register\r
+.if .paramcount = 1 .or .match ({register}, a)\r
+                        lda _SMCDesignator+1\r
+.elseif .match ({register}, x)\r
+                        ldx _SMCDesignator+1\r
+.elseif .match ({register}, y)\r
+                        ldy _SMCDesignator+1\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_StoreValue   label, register\r
+.if .paramcount = 1 .or .match ({register}, a)\r
+                        sta _SMCDesignator+1\r
+.elseif .match ({register}, x)\r
+                        stx _SMCDesignator+1\r
+.elseif .match ({register}, y)\r
+                        sty _SMCDesignator+1\r
+.endif\r
+.endmacro\r
+\r
+\r
+.macro SMC_TransferLowByte      label, value, register\r
+SMC_TransferValue label, value, register\r
+.endmacro\r
+\r
+.macro SMC_LoadLowByte  label, register\r
+SMC_LoadValue label, register\r
+.endmacro\r
+\r
+.macro SMC_StoreLowByte label, register\r
+SMC_StoreValue label, register\r
+.endmacro\r
+\r
+.macro SMC_TransferHighByte     label, value, register\r
+.if .paramcount = 2 .or .match ({register}, a)\r
+                        lda    value\r
+                        sta _SMCDesignator+2\r
+.elseif .match ({register}, x)\r
+                        ldx value\r
+                        stx _SMCDesignator+2\r
+.elseif .match ({register}, y)\r
+                        ldy value\r
+                        sty _SMCDesignator+2\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_LoadHighByte label, register\r
+.if .paramcount = 1 .or .match ({register}, a)\r
+                        lda _SMCDesignator+2\r
+.elseif .match ({register}, x)\r
+                        ldx _SMCDesignator+2\r
+.elseif .match ({register}, y)\r
+                        ldy _SMCDesignator+2\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_StoreHighByte        label, register\r
+.if .paramcount = 1 .or .match ({register}, a)\r
+                        sta _SMCDesignator+2\r
+.elseif .match ({register}, x)\r
+                        stx _SMCDesignator+2\r
+.elseif .match ({register}, y)\r
+                        sty _SMCDesignator+2\r
+.endif\r
+.endmacro\r
+\r
+\r
+.macro SMC_TransferAddressSingle        label, address, register\r
+.if .paramcount = 2 .or .match ((register), a)\r
+        .if (.match (.left (1, {adress}), #))\r
+                ; immediate mode\r
+        lda     #<(.right (.tcount ({adress})-1, {adress}))\r
+                sta _SMCDesignator+1\r
+        lda #>(.right (.tcount ({adress})-1, {adress}))\r
+                sta _SMCDesignator+2\r
+    .else\r
+        ; assume absolute or zero page\r
+                lda    address\r
+                sta _SMCDesignator+1\r
+                lda 1+(address)\r
+                sta _SMCDesignator+2\r
+        .endif\r
+.elseif .match ((register), x)\r
+        .if (.match (.left (1, {adress}), #))\r
+                ; immediate mode\r
+        ldx     #<(.right (.tcount ({adress})-1, {adress}))\r
+                stx _SMCDesignator+1\r
+        ldx #>(.right (.tcount ({adress})-1, {adress}))\r
+                stx _SMCDesignator+2\r
+    .else\r
+        ; assume absolute or zero page\r
+                ldx    address\r
+                stx _SMCDesignator+1\r
+                ldx 1+(address)\r
+                stx _SMCDesignator+2\r
+        .endif\r
+.elseif .match ((register), y)\r
+        .if (.match (.left (1, {adress}), #))\r
+                ; immediate mode\r
+        ldy     #<(.right (.tcount ({adress})-1, {adress}))\r
+                sty _SMCDesignator+1\r
+        ldy #>(.right (.tcount ({adress})-1, {adress}))\r
+                sty _SMCDesignator+2\r
+    .else\r
+        ; assume absolute or zero page\r
+                ldy    address\r
+                sty _SMCDesignator+1\r
+                ldy 1+(address)\r
+                sty _SMCDesignator+2\r
+        .endif\r
+.endif\r
+.endmacro\r
+\r
+\r
+.macro SMC_TransferAddress      label, address\r
+.if (.match (.left (1, {adress}), #))\r
+        ; immediate mode\r
+        lda    #<(.right (.tcount ({adress})-1, {adress}))\r
+        sta _SMCDesignator+1\r
+        ldx #>(.right (.tcount ({adress})-1, {adress}))\r
+        stx _SMCDesignator+2\r
+.else\r
+        ; assume absolute or zero page\r
+        lda    {address}\r
+        sta _SMCDesignator+1\r
+        ldx 1+{address}\r
+        stx _SMCDesignator)+2\r
+.endif\r
+.endmacro\r
+\r
+.macro SMC_StoreAddress label\r
+                sta _SMCDesignator+1\r
+                stx _SMCDesignator+2\r
+.endmacro\r
+\r
+\r
diff --git a/asminc/smc.mac b/asminc/smc.mac
deleted file mode 100644 (file)
index 42dcb10..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-; smc.mac\r
-; ca65 Macro-Pack for Self Modifying Code (SMC)\r
-;\r
-; (c) Christian Krüger, latest change: 09-Nov-2011\r
-;\r
-; This software is provided 'as-is', without any expressed or implied\r
-; warranty.  In no event will the authors be held liable for any damages\r
-; arising from the use of this software.\r
-;\r
-; Permission is granted to anyone to use this software for any purpose,\r
-; including commercial applications, and to alter it and redistribute it\r
-; freely, subject to the following restrictions:\r
-;\r
-; 1. The origin of this software must not be misrepresented; you must not\r
-;    claim that you wrote the original software. If you use this software\r
-;    in a product, an acknowledgment in the product documentation would be\r
-;    appreciated but is not required.\r
-; 2. Altered source versions must be plainly marked as such, and must not\r
-;    be misrepresented as being the original software.\r
-; 3. This notice may not be removed or altered from any source\r
-;    distribution.\r
-;\r
-\r
-.define _SMCDesignator .mid(0, .tcount(label) - 1, label) .ident(.concat(.string(.right(1, label)), "_SMC"))\r
-.define _SMCAlias .mid(0, .tcount(alias) - 1, alias) .ident(.concat(.string(.right(1, alias)), "_SMC"))\r
-.define SMC_AbsAdr      $FADE\r
-.define SMC_ZpAdr               $00\r
-.define SMC_Opcode      nop\r
-.define SMC_Value               $42\r
-\r
-.macro SMC_OperateOnValue opcode, label\r
-        opcode _SMCDesignator+1\r
-.endmacro\r
-\r
-.macro SMC_OperateOnLowByte opcode, label\r
-        SMC_OperateOnValue opcode, label\r
-.endmacro\r
-\r
-.macro SMC_OperateOnHighByte opcode, label\r
-        opcode _SMCDesignator + 2\r
-.endmacro\r
-\r
-.macro SMC_Import alias\r
-.import _SMCAlias\r
-.endmacro\r
-\r
-.macro SMC_Export alias, label\r
-.export _SMCAlias := _SMCDesignator\r
-.endmacro\r
-\r
-.macro  SMC    label, statement\r
-_SMCDesignator: statement\r
-.endmacro\r
-\r
-.macro SMC_TransferOpcode       label, opcode, register\r
-.if .paramcount = 2 .or .match ({register}, a)\r
-                        lda #opcode\r
-                        sta _SMCDesignator\r
-.elseif .match ({register}, x)\r
-                        ldx #opcode\r
-                        stx _SMCDesignator\r
-.elseif .match ({register}, y)\r
-                        ldy #opcode\r
-                        sty _SMCDesignator\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_LoadOpcode   label, register\r
-.if .paramcount = 1 .or .match ({register}, a)\r
-                        lda _SMCDesignator\r
-.elseif .match ({register}, x)\r
-                        ldx _SMCDesignator\r
-.elseif .match ({register}, y)\r
-                        ldy _SMCDesignator\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_StoreOpcode  label, register\r
-.if .paramcount = 1 .or .match ({register}, a)\r
-                        sta _SMCDesignator\r
-.elseif .match ({register}, x)\r
-                        stx _SMCDesignator\r
-.elseif .match ({register}, y)\r
-                        sty _SMCDesignator\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_ChangeBranch         label, destination, register\r
-.if .paramcount = 2 .or .match ({register}, a)\r
-                        lda #(destination - _SMCDesignator -2)\r
-                        sta _SMCDesignator+1\r
-.elseif .match ({register}, x)\r
-                        ldx #(destination - _SMCDesignator - 2)\r
-                        stx _SMCDesignator+1\r
-.elseif .match ({register}, y)\r
-                        ldy #(destination - _SMCDesignator - 2)\r
-                        sty _SMCDesignator+1\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_TransferValue        label, value, register\r
-.if .paramcount = 2 .or .match ({register}, a)\r
-                        lda value\r
-                        sta _SMCDesignator+1\r
-.elseif .match ({register}, x)\r
-                        ldx value\r
-                        stx _SMCDesignator+1\r
-.elseif .match ({register}, y)\r
-                        ldy value\r
-                        sty _SMCDesignator+1\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_LoadValue    label, register\r
-.if .paramcount = 1 .or .match ({register}, a)\r
-                        lda _SMCDesignator+1\r
-.elseif .match ({register}, x)\r
-                        ldx _SMCDesignator+1\r
-.elseif .match ({register}, y)\r
-                        ldy _SMCDesignator+1\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_StoreValue   label, register\r
-.if .paramcount = 1 .or .match ({register}, a)\r
-                        sta _SMCDesignator+1\r
-.elseif .match ({register}, x)\r
-                        stx _SMCDesignator+1\r
-.elseif .match ({register}, y)\r
-                        sty _SMCDesignator+1\r
-.endif\r
-.endmacro\r
-\r
-\r
-.macro SMC_TransferLowByte      label, value, register\r
-SMC_TransferValue label, value, register\r
-.endmacro\r
-\r
-.macro SMC_LoadLowByte  label, register\r
-SMC_LoadValue label, register\r
-.endmacro\r
-\r
-.macro SMC_StoreLowByte label, register\r
-SMC_StoreValue label, register\r
-.endmacro\r
-\r
-.macro SMC_TransferHighByte     label, value, register\r
-.if .paramcount = 2 .or .match ({register}, a)\r
-                        lda    value\r
-                        sta _SMCDesignator+2\r
-.elseif .match ({register}, x)\r
-                        ldx value\r
-                        stx _SMCDesignator+2\r
-.elseif .match ({register}, y)\r
-                        ldy value\r
-                        sty _SMCDesignator+2\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_LoadHighByte label, register\r
-.if .paramcount = 1 .or .match ({register}, a)\r
-                        lda _SMCDesignator+2\r
-.elseif .match ({register}, x)\r
-                        ldx _SMCDesignator+2\r
-.elseif .match ({register}, y)\r
-                        ldy _SMCDesignator+2\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_StoreHighByte        label, register\r
-.if .paramcount = 1 .or .match ({register}, a)\r
-                        sta _SMCDesignator+2\r
-.elseif .match ({register}, x)\r
-                        stx _SMCDesignator+2\r
-.elseif .match ({register}, y)\r
-                        sty _SMCDesignator+2\r
-.endif\r
-.endmacro\r
-\r
-\r
-.macro SMC_TransferAddressSingle        label, address, register\r
-.if .paramcount = 2 .or .match ((register), a)\r
-        .if (.match (.left (1, {adress}), #))\r
-                ; immediate mode\r
-        lda     #<(.right (.tcount ({adress})-1, {adress}))\r
-                sta _SMCDesignator+1\r
-        lda #>(.right (.tcount ({adress})-1, {adress}))\r
-                sta _SMCDesignator+2\r
-    .else\r
-        ; assume absolute or zero page\r
-                lda    address\r
-                sta _SMCDesignator+1\r
-                lda 1+(address)\r
-                sta _SMCDesignator+2\r
-        .endif\r
-.elseif .match ((register), x)\r
-        .if (.match (.left (1, {adress}), #))\r
-                ; immediate mode\r
-        ldx     #<(.right (.tcount ({adress})-1, {adress}))\r
-                stx _SMCDesignator+1\r
-        ldx #>(.right (.tcount ({adress})-1, {adress}))\r
-                stx _SMCDesignator+2\r
-    .else\r
-        ; assume absolute or zero page\r
-                ldx    address\r
-                stx _SMCDesignator+1\r
-                ldx 1+(address)\r
-                stx _SMCDesignator+2\r
-        .endif\r
-.elseif .match ((register), y)\r
-        .if (.match (.left (1, {adress}), #))\r
-                ; immediate mode\r
-        ldy     #<(.right (.tcount ({adress})-1, {adress}))\r
-                sty _SMCDesignator+1\r
-        ldy #>(.right (.tcount ({adress})-1, {adress}))\r
-                sty _SMCDesignator+2\r
-    .else\r
-        ; assume absolute or zero page\r
-                ldy    address\r
-                sty _SMCDesignator+1\r
-                ldy 1+(address)\r
-                sty _SMCDesignator+2\r
-        .endif\r
-.endif\r
-.endmacro\r
-\r
-\r
-.macro SMC_TransferAddress      label, address\r
-.if (.match (.left (1, {adress}), #))\r
-        ; immediate mode\r
-        lda    #<(.right (.tcount ({adress})-1, {adress}))\r
-        sta _SMCDesignator+1\r
-        ldx #>(.right (.tcount ({adress})-1, {adress}))\r
-        stx _SMCDesignator+2\r
-.else\r
-        ; assume absolute or zero page\r
-        lda    {address}\r
-        sta _SMCDesignator+1\r
-        ldx 1+{address}\r
-        stx _SMCDesignator)+2\r
-.endif\r
-.endmacro\r
-\r
-.macro SMC_StoreAddress label\r
-                sta _SMCDesignator+1\r
-                stx _SMCDesignator+2\r
-.endmacro\r
-\r
-\r
index 01a977715d80edbb01b22d63962391e13fdb2e88..38ba844e41290162e73b106447b902f1072a6636 100644 (file)
@@ -6,7 +6,7 @@
 <date>2012-02-19
 
 <abstract>
-The 'smc.mac' macro package for ca65 eases the use, increases the safeness and
+The 'smc.inc' macro package for ca65 eases the use, increases the safeness and
 self-explanation of 'self-modifying-code' (SMC).
 </abstract>
 
@@ -38,7 +38,7 @@ general purpose library with SMC excludes ROM targets!
 The ca65 SMC macro package consists of two files:
 
 <itemize>
-<item><tt>smc.mac</tt>
+<item><tt>smc.inc</tt>
 <item><tt>opcodes.inc</tt>
 </itemize>