Add files via upload
This commit is contained in:
@@ -0,0 +1,796 @@
|
||||
*=================================================
|
||||
* Utility Macros - from Merlin disk
|
||||
* by Dave Klimas, et al
|
||||
*
|
||||
* Copyright Apple Computer, Inc. 1986, 1987
|
||||
* and Roger Wagner Publishing, Inc. 1988
|
||||
* All Rights Reserved
|
||||
*-------------------------------------------------
|
||||
|
||||
PHWL MAC
|
||||
PHW ]1
|
||||
PHL ]2
|
||||
<<<
|
||||
PHLW MAC
|
||||
PHL ]1
|
||||
PHW ]2
|
||||
<<<
|
||||
PxW MAC
|
||||
DO ]0/1
|
||||
PHW ]1
|
||||
DO ]0/2
|
||||
PHW ]2
|
||||
DO ]0/3
|
||||
PHW ]3
|
||||
DO ]0/4
|
||||
PHW ]4
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
<<<
|
||||
PxL MAC
|
||||
DO ]0/1
|
||||
PHL ]1
|
||||
DO ]0/2
|
||||
PHL ]2
|
||||
DO ]0/3
|
||||
PHL ]3
|
||||
DO ]0/4
|
||||
PHL ]4
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
<<<
|
||||
P2SL MAC
|
||||
PHA
|
||||
P1SL MAC
|
||||
PHA
|
||||
PHL MAC
|
||||
IF #=]1
|
||||
PEA ^]1
|
||||
ELSE
|
||||
PHW ]1+2
|
||||
FIN
|
||||
PHW ]1
|
||||
<<<
|
||||
P2SW MAC
|
||||
PHA
|
||||
P1SW MAC
|
||||
PHA
|
||||
PHW MAC
|
||||
IF #=]1
|
||||
PEA ]1
|
||||
ELSE
|
||||
IF MX/2
|
||||
LDA ]1+1
|
||||
PHA
|
||||
FIN
|
||||
LDA ]1
|
||||
PHA
|
||||
FIN
|
||||
<<<
|
||||
PushSpace MAC
|
||||
PHS MAC
|
||||
DO ]0
|
||||
LUP ]1
|
||||
PHA
|
||||
--^
|
||||
ELSE
|
||||
PHA
|
||||
FIN
|
||||
<<<
|
||||
|
||||
********************************
|
||||
|
||||
Push4 MAC
|
||||
PushLong #0
|
||||
PushLong #0
|
||||
<<<
|
||||
|
||||
PushPtr MAC
|
||||
PEA ^]1
|
||||
PEA ]1
|
||||
EOM
|
||||
|
||||
PushLong MAC
|
||||
IF #=]1
|
||||
PushWord #^]1
|
||||
ELSE
|
||||
PushWord ]1+2
|
||||
FIN
|
||||
PushWord ]1
|
||||
<<<
|
||||
|
||||
PushWord MAC
|
||||
IF #=]1
|
||||
PEA ]1
|
||||
ELSE
|
||||
IF MX/2
|
||||
LDA ]1+1
|
||||
PHA
|
||||
FIN
|
||||
LDA ]1
|
||||
PHA
|
||||
FIN
|
||||
<<<
|
||||
|
||||
PullLong MAC
|
||||
DO ]0
|
||||
PullWord ]1
|
||||
PullWord ]1+2
|
||||
ELSE
|
||||
PullWord
|
||||
PullWord
|
||||
FIN
|
||||
<<<
|
||||
|
||||
PullWord MAC
|
||||
PLA
|
||||
DO ]0
|
||||
STA ]1
|
||||
FIN
|
||||
IF MX/2
|
||||
PLA
|
||||
DO ]0
|
||||
STA ]1+1
|
||||
FIN
|
||||
FIN
|
||||
<<<
|
||||
|
||||
MoveLong MAC
|
||||
MoveWord ]1;]2
|
||||
MoveWord ]1+2;]2+2
|
||||
<<<
|
||||
|
||||
MoveWord MAC
|
||||
LDA ]1
|
||||
STA ]2
|
||||
IF MX/2
|
||||
LDA ]1+1
|
||||
STA ]2+1
|
||||
FIN
|
||||
<<<
|
||||
|
||||
MoveBlock MAC ;1st_byte;last_byte;dest
|
||||
DO ]2/]1
|
||||
DO ]3/]1
|
||||
LDX #]2
|
||||
LDY #]3+]2-]1
|
||||
LDA #]2-]1
|
||||
MVP ]1,]3
|
||||
ELSE
|
||||
LDX #]1
|
||||
LDY #]3
|
||||
LDA #]2-]1
|
||||
MVN ]1,]3
|
||||
FIN
|
||||
ELSE
|
||||
ERR 1 ;Last adrs < first adrs
|
||||
FIN
|
||||
<<<
|
||||
|
||||
CmpLong MAC
|
||||
LDA ]1
|
||||
CMP ]2
|
||||
IF #=]1
|
||||
LDA ^]1
|
||||
ELSE
|
||||
LDA ]1+2
|
||||
FIN
|
||||
IF #=]2
|
||||
SBC ^]2
|
||||
ELSE
|
||||
SBC ]2+2
|
||||
FIN
|
||||
<<<
|
||||
|
||||
LONGM MAC
|
||||
LONGACC MAC ;Assumes native mode
|
||||
IF MX&2 ;If A is now short
|
||||
REP %00100000
|
||||
FIN
|
||||
<<<
|
||||
|
||||
LONGX MAC
|
||||
LONGXY MAC ;Assumes native mode
|
||||
IF MX&1 ;If X is now short
|
||||
REP %00010000
|
||||
FIN
|
||||
<<<
|
||||
|
||||
LONG MAC
|
||||
LONGAX MAC ;Assumes native mode
|
||||
IF MX ;If not now in full 16
|
||||
REP %00110000
|
||||
FIN
|
||||
<<<
|
||||
|
||||
SHORTM MAC
|
||||
SHORTACC MAC ;Assumes native mode
|
||||
IF MX&2 ;If A is now short,
|
||||
ELSE ; ignore
|
||||
SEP %00100000
|
||||
FIN
|
||||
<<<
|
||||
|
||||
SHORTX MAC
|
||||
SHORTXY MAC ;Assumes native mode
|
||||
IF MX&1 ;If X is now short,
|
||||
ELSE ; ignore
|
||||
SEP %00010000
|
||||
FIN
|
||||
<<<
|
||||
|
||||
SHORT MAC
|
||||
SHORTAX MAC ;Assumes native mode
|
||||
IF MX!%11 ;If not now in full 8
|
||||
SEP %00110000
|
||||
FIN
|
||||
<<<
|
||||
|
||||
LONGI MAC ; Duplicates APW function
|
||||
LST OFF
|
||||
DO ]1 ; If arg = 1 = "on" = make long
|
||||
|
||||
IF MX-3/-1 ; If M is short and X is long
|
||||
; Leave alone
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX/3 ; If M is short and X is short
|
||||
MX %10 ; Make X long, leave M short
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX!3/3 ; If M is long and X is long
|
||||
FIN ; Leave alone
|
||||
|
||||
IF MX-2/-1 ; If M is long and X is short
|
||||
MX %00 ; Make X long, leave M long
|
||||
FIN ; End of this test
|
||||
|
||||
ELSE ; If arg = 0 = "off" = make short
|
||||
|
||||
IF MX/3 ; If M is short and X is short
|
||||
; Leave alone
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX-3/-1 ; If M is short and X is long
|
||||
MX %11 ; Make X short, leave M short
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX-2/-1 ; If M is long and X is short
|
||||
; Leave alone
|
||||
FIN ; End of this test
|
||||
|
||||
|
||||
IF MX!3/3 ; If M is long and X is long
|
||||
MX %01 ; Make X short, leave M long
|
||||
FIN ; Leave alone
|
||||
|
||||
FIN ; End of macro tests
|
||||
|
||||
LST RTN
|
||||
<<<
|
||||
|
||||
LONGA MAC ; Duplicates APW function
|
||||
LST OFF
|
||||
DO ]1 ; If arg = 1 = "on" = make long
|
||||
|
||||
IF MX-3/-1 ; If M is short and X is long
|
||||
MX %00 ; Make M long, leave X long
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX/3 ; If M is short and X is short
|
||||
MX %01 ; Make M long, leave X short
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX!3/3 ; If M is long and X is long
|
||||
FIN ; Leave alone
|
||||
|
||||
IF MX-2/-1 ; If M is long and X is short
|
||||
; Leave alone
|
||||
FIN ; End of this test
|
||||
|
||||
ELSE ; If arg = 0 = "off" = make short
|
||||
|
||||
IF MX/3 ; If M is short and X is short
|
||||
; Leave alone
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX-3/-1 ; If M is short and X is long
|
||||
; Leave alone
|
||||
FIN ; End of this test
|
||||
|
||||
IF MX-2/-1 ; If M is long and X is short
|
||||
MX %11 ; Make M short, leave X short
|
||||
FIN ; End of this test
|
||||
|
||||
|
||||
IF MX!3/3 ; If M is long and X is long
|
||||
MX %10 ; Make M short, leave X long
|
||||
FIN ; Leave alone
|
||||
|
||||
FIN ; End of macro tests
|
||||
|
||||
LST RTN
|
||||
<<<
|
||||
|
||||
M65816 MAC
|
||||
DO ]1
|
||||
XC
|
||||
XC ; Full 65816 mode for assembler
|
||||
MX %00
|
||||
ELSE
|
||||
MX %11 ; 8 bit mode for assembler
|
||||
FIN
|
||||
<<<
|
||||
|
||||
Expmac MAC ; Replace APW GEN function
|
||||
DO ]1
|
||||
EXP ONLY ; Expand macros
|
||||
ELSE
|
||||
EXP OFF
|
||||
FIN
|
||||
<<<
|
||||
|
||||
Tool MAC
|
||||
LDX #]1 ; load tool call #
|
||||
JSL $E10000 ; go to dispatcher
|
||||
<<<
|
||||
|
||||
**************************************************
|
||||
* Auto-menu item macros *
|
||||
* This is one alternative for defining a menu *
|
||||
* item. It has the advantage of letting you *
|
||||
* include specifiers for Bold, Italic, etc. *
|
||||
**************************************************
|
||||
|
||||
*-------------------------------------------------
|
||||
* Syntax:
|
||||
* ]mnum = 0 ; initialize menu # at startvalue-1
|
||||
* Menu ' Menu 1 '
|
||||
*
|
||||
* (See Menu macro, defined later....)
|
||||
*
|
||||
* ]inum = 255 ; Menu item starts with #256
|
||||
* Item ' Choice 1 ';Kybd;'Bb';Check
|
||||
* Ch1 = ]inum ; Set label Ch1 if somewhere else
|
||||
* needs to use this item #.
|
||||
* Item ' Choice 2 ';Disable;'';Kybd;'Cc'
|
||||
* Item ' Choice 3 ';Divide;''
|
||||
*
|
||||
* Menu ' Menu 2 '
|
||||
*
|
||||
* Item ' Choice 4 ';Bold;'';Check
|
||||
* Item ' Choice 5 ';Italic;'';Blank
|
||||
* Item ' Choice 6 ';Underline';Kybd;'Dd'
|
||||
*
|
||||
* IMPORTANT: ALL items, except for Check and Blank, are followed by a second
|
||||
* value. For the Kybd item, the ASCII characters follow in single quotes, Ex:
|
||||
* Kybd;'Cc' (specifies Apple-C as an equivalent).
|
||||
* All other items use a null 2nd value, as in:
|
||||
* Italic;'' or Divide;'' etc.
|
||||
*
|
||||
* The variable ]inum MUST be initialized for the value of your first
|
||||
* menu item MINUS 1 before using the first Item macro.
|
||||
*
|
||||
* Check or Blank, if used, MUST be the last item in the macro line.
|
||||
*
|
||||
* There can be up to three parameter pairs after the item name.
|
||||
*-------------------------------------------------
|
||||
* The point of all this is that rather than hard-
|
||||
* code menu items values and subsequent references
|
||||
* to that number when disabling menus, etc., this
|
||||
* lets you add and delete menu items at will,
|
||||
* and have labels like Ch1, etc. above, auto-
|
||||
* matically set for the correct value during the
|
||||
* assembly.
|
||||
*-------------------------------------------------
|
||||
|
||||
* Equates for Item macro:
|
||||
|
||||
Bold = 'B' ; bold menu item
|
||||
Disable = 'D' ; disabled menu item
|
||||
Italic = 'I' ; italic menu item
|
||||
Underline = 'U' ; underlined menu item
|
||||
Divide = 'V' ; menu dividing line
|
||||
ColorHi = 'X' ; color hilite menu item
|
||||
Kybd = '*' ; keyboard menu equivalent
|
||||
Check = $1243 ; menu item with checkmark
|
||||
Blank = $2043 ; menu item with blank
|
||||
|
||||
*-------------------------------------------------
|
||||
|
||||
Item MAC ; Macro for creating a menu item
|
||||
|
||||
ASC '--'
|
||||
ASC ]1 ; Text of menu item
|
||||
ASC '\H'
|
||||
DA ]inum ; Menu item #
|
||||
|
||||
DO ]0/2 ; Only if more items to do... (>2)
|
||||
|
||||
DO ]2-Check-1/-1 ; Only if Check item
|
||||
DA ]2 ; ]2 = Check
|
||||
ELSE ; otherwise kybd char or null
|
||||
DO ]2-Blank-1/-1 ; Only if Blank check item
|
||||
DA ]2 ; ]2 = Blank
|
||||
ELSE
|
||||
DB ]2 ; Function char value
|
||||
ASC ]3 ; ASCII argument, if any for Kybd
|
||||
FIN
|
||||
FIN
|
||||
|
||||
FIN
|
||||
|
||||
DO ]0/4 ; Only if more items to do... (>3)
|
||||
|
||||
DO ]4-Check-1/-1 ; Only if Check item
|
||||
DA ]4 ; ]4 = Check
|
||||
ELSE ; otherwise kybd char or null
|
||||
DO ]4-Blank-1/-1 ; Only if Blank check item
|
||||
DA ]4 ; ]4 = Blank
|
||||
ELSE
|
||||
DB ]4 ; Function char value
|
||||
ASC ]5 ; ASCII argument, if any for Kybd
|
||||
FIN
|
||||
FIN
|
||||
|
||||
FIN
|
||||
|
||||
DO ]0/6 ; Only if more items to do... (>5)
|
||||
|
||||
DO ]6-Check-1/-1 ; Only if Check item
|
||||
DA ]6 ; ]6 = Check
|
||||
ELSE ; otherwise kybd char or null
|
||||
DO ]6-Blank-1/-1 ; Only if Blank check item
|
||||
DA ]6 ; ]6 = Blank
|
||||
ELSE
|
||||
DB ]6 ; Function char value
|
||||
ASC ]7 ; ASCII argument, if any for Kybd
|
||||
FIN
|
||||
FIN
|
||||
|
||||
FIN
|
||||
|
||||
DB $00 ; End of menu item
|
||||
|
||||
]inum = ]inum+1
|
||||
<<<
|
||||
|
||||
**************************************************
|
||||
* This is another alternative macro for both *
|
||||
* menus and menu items. It is simpler, and *
|
||||
* more compact, but not as versatile. *
|
||||
**************************************************
|
||||
|
||||
*===============================================
|
||||
* Variables ]mnum,]inum should be defined
|
||||
* prior to using these MenuMaker macros.
|
||||
*
|
||||
* They both should be starting value-1
|
||||
*
|
||||
* Syntax:
|
||||
*
|
||||
* ]mnum = 0 ; 1st menu number will be 1
|
||||
* ]inum = 255 ; 1st menu item number will be 256
|
||||
*
|
||||
* Menu ' @';X ; Apple menu, color highlighting.
|
||||
*
|
||||
* MItem ' About... ' ; "About" menu item
|
||||
*
|
||||
* Menu ' Menu Title 1' ; (this will be menu number 2)
|
||||
*
|
||||
* MItem ' Choice 1 '
|
||||
* MItem ' Choice 2 ';'D*Cc' ; Disabled, kybd char: Cc
|
||||
* ; Above will be menu item #'s 2&3
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
Menu MAC
|
||||
ASC '>>'
|
||||
ASC ]1
|
||||
ASC '\H'
|
||||
DA ]mnum
|
||||
DO ]0>1
|
||||
ASC ]2
|
||||
FIN
|
||||
DB 0
|
||||
]mnum = ]mnum+1
|
||||
<<<
|
||||
|
||||
MItem MAC
|
||||
ASC '--'
|
||||
ASC ]1
|
||||
ASC '\H'
|
||||
DA ]inum
|
||||
DO ]0>1
|
||||
ASC ]2
|
||||
FIN
|
||||
DB 0
|
||||
]inum = ]inum+1
|
||||
<<<
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* Native -- Processor is in LONG "native" mode.
|
||||
* Native Long -- Processor is in LONG "native" mode.
|
||||
* Native Short -- Processor is in SHORT "native" mode.
|
||||
*
|
||||
|
||||
Native MAC
|
||||
CLC
|
||||
XCE
|
||||
IF 0=]0 ;If Native (Long)
|
||||
LONGAX
|
||||
FIN
|
||||
|
||||
DO ]0
|
||||
IF L=]1 ;If Native Long
|
||||
LONGAX
|
||||
|
||||
FIN ;If Native Short only
|
||||
FIN ; do CLC, XCE.
|
||||
EOM
|
||||
|
||||
*--------------------------------------------------------
|
||||
*
|
||||
* Emulation -- Set Processor into "emulation" mode.
|
||||
*
|
||||
|
||||
Emulation MAC
|
||||
SEC
|
||||
XCE
|
||||
EOM
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* WriteCh -- Print Character From Accumulator
|
||||
* WriteCh ADDR -- Print Character At Label
|
||||
* WriteCh ADDR,X -- Print Character At Label,X
|
||||
*
|
||||
|
||||
WriteCh MAC
|
||||
DO ]0
|
||||
LDA ]1
|
||||
FIN
|
||||
PHA
|
||||
LDX #$180C
|
||||
JSL $E10000
|
||||
EOM
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* ReadCh -- Get Keypress in Accumulator
|
||||
* ReadCh ADDR -- Get Keypress in Label
|
||||
*
|
||||
|
||||
ReadCh MAC
|
||||
PEA 0
|
||||
PEA 1
|
||||
LDX #$220C
|
||||
JSL $E10000
|
||||
PLA
|
||||
DO ]0
|
||||
STA ]1
|
||||
FIN
|
||||
EOM
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* WriteLn "STRING" -- Print Literal String with CR.
|
||||
* WriteLn ADDR -- Print String At Address with CR.
|
||||
* WriteLn -- Print CR.
|
||||
*
|
||||
|
||||
WriteLn MAC
|
||||
DO ]0
|
||||
WriteStr ]1
|
||||
FIN
|
||||
WriteCh #$8D
|
||||
EOM
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* WriteStr "STRING" -- Print Literal String.
|
||||
* WriteStr ADDR -- Print String At Address.
|
||||
* WriteStr -- Print String At A (Lo),Y (Hi).
|
||||
*
|
||||
|
||||
WriteStr MAC
|
||||
IF 0=]0 ;If No Label
|
||||
PHY
|
||||
PHA
|
||||
|
||||
ELSE
|
||||
|
||||
IF "=]1
|
||||
PEA ^]String
|
||||
PEA ]String
|
||||
BRL ]Skip
|
||||
]String STR ]1
|
||||
]Skip
|
||||
ELSE
|
||||
|
||||
IF '=]1
|
||||
PEA ^]String
|
||||
PEA ]String
|
||||
BRL ]Skip
|
||||
]String STR ]1
|
||||
]Skip
|
||||
ELSE
|
||||
|
||||
PEA ^]1
|
||||
PEA ]1
|
||||
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
LDX #$1C0C
|
||||
JSL $E10000
|
||||
EOM
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* DrawStrHV 8;12;"STRING" Print Literal String on
|
||||
* DrawStr 8;12;ADDR Super Hi-Res Screen.
|
||||
*
|
||||
|
||||
DrawStrHV MAC
|
||||
HtabVtab ]1;]2
|
||||
DrawStr ]3
|
||||
<<<
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* DrawStr "STRING" -- Print Literal String.
|
||||
* DrawStr ADDR -- Print String At Address.
|
||||
*
|
||||
|
||||
DrawStr MAC
|
||||
IF "=]1
|
||||
PEA ^]String
|
||||
PEA ]String
|
||||
BRL ]Skip
|
||||
]String STR ]1
|
||||
]Skip
|
||||
ELSE
|
||||
IF '=]1
|
||||
PEA ^]String
|
||||
PEA ]String
|
||||
BRL ]Skip
|
||||
]String STR ]1
|
||||
]Skip
|
||||
ELSE
|
||||
PEA ^]1
|
||||
PEA ]1
|
||||
FIN
|
||||
FIN
|
||||
LDX #$A504 ;DrawString
|
||||
JSL $E10000
|
||||
<<<
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* HtabVtab #8;#12 -- Position at Htab 8, Vtab 12.
|
||||
* HtabVtab H;V on super hires screens.
|
||||
*
|
||||
|
||||
HtabVtab MAC
|
||||
IF #=]1
|
||||
LDA ]1*8
|
||||
ELSE
|
||||
LDA ]1
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
FIN
|
||||
PHA
|
||||
IF #=]1
|
||||
LDA ]2*8
|
||||
ELSE
|
||||
LDA ]2
|
||||
ASL
|
||||
ASL
|
||||
ASL
|
||||
FIN
|
||||
PHA
|
||||
LDX #$3A04 ;MoveTo
|
||||
JSL $E10000
|
||||
<<<
|
||||
|
||||
*-----------------------------------------------------
|
||||
*
|
||||
* Deref MyHandle;MyPtr -- Uses zero page 0-3 to
|
||||
* de-reference a handle.
|
||||
*
|
||||
|
||||
Deref MAC
|
||||
LDA ]1
|
||||
LDX ]1+2
|
||||
STA 0
|
||||
STX 2
|
||||
LDA [0]
|
||||
STA ]2
|
||||
LDY #2
|
||||
LDA [0],Y
|
||||
STA ]2+2
|
||||
<<<
|
||||
|
||||
*==================================================
|
||||
* The MLI16 macro assumes the CALLDOS file from the
|
||||
* SUBROUT.LIB is linked in. It provides an easy
|
||||
* way to make MLI calls. Example syntax:
|
||||
*
|
||||
* MLI16 close;CLSPARMS
|
||||
*--------------------------------------------------
|
||||
|
||||
MLI16 MAC ;Uses CALLDOS file in the
|
||||
IF MX ; subroutine library
|
||||
REP %00110000 ;Force full 16-bit mode, if
|
||||
FIN ; not already there.
|
||||
LDX #]1 ;Call code (use MLI.CODES)
|
||||
LDA #]2 ;Low word of PARMS tbl adr
|
||||
JSR CALLDOS ;Returns CS if an error
|
||||
<<<
|
||||
|
||||
*=================================================
|
||||
* The following macros are APW-equivalents for
|
||||
* compatibility with APW style listings.
|
||||
*
|
||||
* One difference between Merlin and APW here: Instead of
|
||||
* using the syntax PULL1 ADDRESS;X, Merlin can take
|
||||
* the raw statement PULL1 ADDRESS,X.
|
||||
*
|
||||
|
||||
PULL1 MAC
|
||||
SEP #%00100000
|
||||
PLA
|
||||
REP #%00100000
|
||||
DO ]0/1 ;If 1 parm
|
||||
IF MX>0
|
||||
STA ]1
|
||||
FIN
|
||||
IF MX=0
|
||||
STAL ]1
|
||||
FIN
|
||||
FIN
|
||||
<<<
|
||||
|
||||
PULL3 MAC
|
||||
SEP #%00100000
|
||||
PLA
|
||||
STA ]1
|
||||
REP #%00100000
|
||||
PLA
|
||||
STA ]1+1
|
||||
FIN
|
||||
<<<
|
||||
|
||||
PUSH1 MAC
|
||||
SEP #%00100000
|
||||
IF ]0/1 ;if one parm
|
||||
LDA ]1
|
||||
FIN
|
||||
PHA
|
||||
REP #%00100000
|
||||
<<<
|
||||
|
||||
PUSH3 MAC
|
||||
IF #=]1
|
||||
LDA #^]1 ;get two hi order bytes
|
||||
PHA
|
||||
PHB
|
||||
LDA #<]1
|
||||
STA 1,S
|
||||
ELSE
|
||||
LDA ]1+1
|
||||
PHA
|
||||
PHB
|
||||
LDA ]1
|
||||
STA 1,S
|
||||
FIN
|
||||
<<<
|
||||
|
||||
Reference in New Issue
Block a user