From e6a63010f2e023391e3dfe268e2f7ed983757f40 Mon Sep 17 00:00:00 2001 From: dwsJason Date: Tue, 25 Feb 2020 21:29:48 -0500 Subject: [PATCH] import Tool macros --- samples/apple2gs/gsos/macros/Locator.Macs.s | 161 ++++ samples/apple2gs/gsos/macros/Mem.Macs.s | 214 ++++++ samples/apple2gs/gsos/macros/Misc.Macs.s | 338 +++++++++ samples/apple2gs/gsos/macros/Util.Macs.s | 788 ++++++++++++++++++++ 4 files changed, 1501 insertions(+) create mode 100644 samples/apple2gs/gsos/macros/Locator.Macs.s create mode 100644 samples/apple2gs/gsos/macros/Mem.Macs.s create mode 100644 samples/apple2gs/gsos/macros/Misc.Macs.s create mode 100644 samples/apple2gs/gsos/macros/Util.Macs.s diff --git a/samples/apple2gs/gsos/macros/Locator.Macs.s b/samples/apple2gs/gsos/macros/Locator.Macs.s new file mode 100644 index 0000000..8da834a --- /dev/null +++ b/samples/apple2gs/gsos/macros/Locator.Macs.s @@ -0,0 +1,161 @@ +* Tool Locator macros +* by Dave Klimas +; +; Copyright Apple Computer, Inc. 1986, 1987 +; and Roger Wagner Publishing, Inc. 1988 +; All Rights Reserved +; +macro _TLBootInit +{ + Tool $101 +} +macro _TLStartUp +{ + Tool $201 +} +macro _TLShutDown +{ + Tool $301 +} +;~TLVersion MAC +; PHA +macro _TLVersion +{ + Tool $401 +} +macro _TLReset +{ + Tool $501 +} +;~TLStatus MAC +; PHA +macro _TLStatus +{ + Tool $601 +} +;~GetTSPtr MAC +; PHS 2 +; PxW ]1;]2 +macro _GetTSPtr +{ + Tool $901 +} +;~SetTSPtr MAC +; PxW ]1;]2 +; PHL ]3 +macro _SetTSPtr +{ + Tool $A01 +} +;~GetFuncPtr MAC +; PHS 2 +; PxW ]1;]2 +macro _GetFuncPtr +{ + Tool $B01 +} +;~GetWAP MAC +; PHS 2 +; PxW ]1;]2 +macro _GetWAP +{ + Tool $C01 +} +;~SetWAP MAC +; PxW ]1;]2 +; PHL ]3 +macro _SetWAP +{ + Tool $D01 +} +;~LoadTools MAC +; PHL ]1 +macro _LoadTools +{ + Tool $E01 +} +;~LoadOneTool MAC +; PxW ]1;]2 +macro _LoadOneTool +{ + Tool $F01 +} +;~UnloadOneTool MAC +; PHW ]1 +macro _UnloadOneTool +{ + Tool $1001 +} +;~TLMountVolume MAC +; PHA +; PxW ]1;]2 +; PxL ]3;]4;]5;]6 +macro _TLMountVolume +{ + Tool $1101 +} +;~TLTextMountVolume MAC +; PHA +; PxL ]1;]2;]3;]4 +macro _TLTextMountVolume +{ + Tool $1201 +} +;~SaveTextState MAC +; PHS 2 +macro _SaveTextState +{ + Tool $1301 +} +;~RestoreTextState MAC +; PHL ]1 +macro _RestoreTextState +{ + Tool $1401 +} +;~MessageCenter MAC +; PxW ]1;]2 +; PHL ]3 +macro _MessageCenter +{ + Tool $1501 +} +macro _SetDefaultTPT +{ + Tool $1601 +} +;~MessageByName MAC +; PHS 2 +; PHWL ]1;]2 +; PxW ]3;]4 +macro _MessageByName +{ + Tool $1701 +} +;~StartUpTools MAC +; PHA +; PxW ]1;]2 +; PxL ]3;]4 +macro _StartUpTools +{ + Tool $1801 +} +;~ShutDownTools MAC +; PHWL ]1;]2 +macro _ShutDownTools +{ + Tool $1901 +} +macro _GetMsgHandle +{ + Tool $1A01 +} +macro _AcceptRequests +{ + Tool $1B01 +} +macro _SendRequest +{ + Tool $1C01 +} + diff --git a/samples/apple2gs/gsos/macros/Mem.Macs.s b/samples/apple2gs/gsos/macros/Mem.Macs.s new file mode 100644 index 0000000..88e724e --- /dev/null +++ b/samples/apple2gs/gsos/macros/Mem.Macs.s @@ -0,0 +1,214 @@ +* Memory Manager macros +* by Dave Klimas +; +; Copyright Apple Computer, Inc. 1986, 1987 +; and Roger Wagner Publishing, Inc. 1988 +; All Rights Reserved +; +macro _MMBootInit +{ + Tool $102 +} +;~MMStartUp MAC +; PHA +macro _MMStartUp +{ + Tool $202 +} +;~MMShutDown MAC +; PHW ]1 +macro _MMShutDown +{ + Tool $302 +} +;~MMVersion MAC +; PHA +macro _MMVersion +{ + Tool $402 +} +macro _MMReset +{ + Tool $502 +} +;~MMStatus MAC +; PHA +macro _MMStatus +{ + Tool $602 +} +;~NewHandle MAC +; P2SL ]1 +; PxW ]2;]3 +; PHL ]4 +macro _NewHandle +{ + Tool $902 +} +;~ReallocHandle MAC +; PHLW ]1;]2 +; PHWL ]3;]4 +; PHL ]5 +macro _ReallocHandle +{ + Tool $A02 +} +;~RestoreHandle MAC +; PHL ]1 +macro _RestoreHandle +{ + Tool $B02 +} +;~AddToOOMQueue MAC +; PHL ]1 +macro _AddToOOMQueue +{ + Tool $C02 +} +;~DeleteFromOOMQueue MAC +; PHL ]1 +macro _DeleteFromOOMQueue +{ + Tool $D02 +} +;~DisposeHandle MAC +; PHL ]1 +macro _DisposeHandle +{ + Tool $1002 +} +;~DisposeAll MAC +; PHW ]1 +macro _DisposeAll +{ + Tool $1102 +} +;~PurgeHandle MAC +; PHL ]1 +macro _PurgeHandle +{ + Tool $1202 +} +;~PurgeAll MAC +; PHW ]1 +macro _PurgeAll +{ + Tool $1302 +} +;~GetHandleSize MAC +; P2SL ]1 +macro _GetHandleSize +{ + Tool $1802 +} +;~SetHandleSize MAC +; PxL ]1;]2 +macro _SetHandleSize +{ + Tool $1902 +} +;~FindHandle MAC +; P2SL ]1 +macro _FindHandle +{ + Tool $1A02 +} +;~FreeMem MAC +; PHS 2 +macro _FreeMem +{ + Tool $1B02 +} +;~MaxBlock MAC +; PHS 2 +macro _MaxBlock +{ + Tool $1C02 +} +;~TotalMem MAC +; PHS 2 +macro _TotalMem +{ + Tool $1D02 +} +;~CheckHandle MAC +; PHL ]1 +macro _CheckHandle +{ + Tool $1E02 +} +macro _CompactMem +{ + Tool $1F02 +} +;~HLock MAC +; PHL ]1 +macro _HLock +{ + Tool $2002 +} +;~HLockAll MAC +; PHW ]1 +macro _HLockAll +{ + Tool $2102 +} +;~HUnlock MAC +; PHL ]1 +macro _HUnlock +{ + Tool $2202 +} +;~HUnlockAll MAC +; PHW ]1 +macro _HUnlockAll +{ + Tool $2302 +} +;~SetPurge MAC +; PHWL ]1;]2 +macro _SetPurge +{ + Tool $2402 +} +;~SetPurgeAll MAC +; PxW ]1;]2 +macro _SetPurgeAll +{ + Tool $2502 +} +;~PtrToHand MAC +; PxL ]1;]2;]3 +macro _PtrToHand +{ + Tool $2802 +} +;~HandToPtr MAC +; PxL ]1;]2;]3 +macro _HandToPtr +{ + Tool $2902 +} +;~HandToHand MAC +; PxL ]1;]2;3 +macro _HandToHand +{ + Tool $2A02 +} +;~BlockMove MAC +; PxL ]1;]2;]3 +macro _BlockMove +{ + Tool $2B02 +} +;~RealFreeMem MAC +; PHS 2 +macro _RealFreeMem +{ + Tool $2F02 +} +macro _SetHandleID +{ + Tool $3002 +} + diff --git a/samples/apple2gs/gsos/macros/Misc.Macs.s b/samples/apple2gs/gsos/macros/Misc.Macs.s new file mode 100644 index 0000000..0a247cf --- /dev/null +++ b/samples/apple2gs/gsos/macros/Misc.Macs.s @@ -0,0 +1,338 @@ +* Misc Tool macros +* by Dave Klimas +; +; Copyright Apple Computer, Inc. 1986, 1987 +; and Roger Wagner Publishing, Inc. 1988 +; All Rights Reserved +; +macro _MTBootInit +{ + Tool $103 +} +macro _MTStartUp +{ + Tool $203 +} +macro _MTShutDown +{ + Tool $303 +} +;~MTVersion MAC +; PHA +macro _MTVersion +{ + Tool $403 +} +macro _MTReset +{ + Tool $503 +} +;~MTStatus MAC +; PHA +macro _MTStatus +{ + Tool $603 +} +;~WriteBRam MAC +; PHL ]1 +macro _WriteBRam +{ + Tool $903 +} +;~ReadBRam MAC +; PHL ]1 +macro _ReadBRam +{ + Tool $A03 +} +;~WriteBParam MAC +; PxW ]1;]2 +macro _WriteBParam +{ + Tool $B03 +} +;~ReadBParam MAC +; P1SW ]1 +macro _ReadBParam +{ + Tool $C03 +} +;~ReadTimeHex MAC +; PHS 4 +macro _ReadTimeHex +{ + Tool $D03 +} +;~WriteTimeHex MAC +; PxW ]1;]2;]3 +macro _WriteTimeHex +{ + Tool $E03 +} +;~ReadAsciiTime MAC +; PHL ]1 +macro _ReadAsciiTime +{ + Tool $F03 +} +;~SetVector MAC +; PHWL ]1;]2 +macro _SetVector +{ + Tool $1003 +} +;~GetVector MAC +; P2SW ]1 +macro _GetVector +{ + Tool $1103 +} +;~SetHeartBeat MAC +; PHL ]1 +macro _SetHeartBeat +{ + Tool $1203 +} +;~DelHeartBeat MAC +; PHL ]1 +macro _DelHeartBeat +{ + Tool $1303 +} +macro _ClrHeartBeat +{ + Tool $1403 +} +;~SysFailMgr MAC +; PHWL ]1;]2 +macro _SysFailMgr +{ + Tool $1503 +} +;~GetAddr MAC +; P2SW ]1 +macro _GetAddr +{ + Tool $1603 +} +;~ReadMouse MAC +; PHS 3 +macro _ReadMouse +{ + Tool $1703 +} +;~InitMouse MAC +; PHW ]1 +macro _InitMouse +{ + Tool $1803 +} +;~SetMouse MAC +; PHW ]1 +macro _SetMouse +{ + Tool $1903 +} +macro _HomeMouse +{ + Tool $1A03 +} +macro _ClearMouse +{ + Tool $1B03 +} +;~ClampMouse MAC +; PxW ]1;]2;]3;]4 +macro _ClampMouse +{ + Tool $1C03 +} +;~GetMouseClamp MAC +; PHS 4 +macro _GetMouseClamp +{ + Tool $1D03 +} +;~PosMouse MAC +; PxW ]1;]2 +macro _PosMouse +{ + Tool $1E03 +} +;~ServeMouse MAC +; PHA +macro _ServeMouse +{ + Tool $1F03 +} +;~GetNewID MAC +; P1SW ]1 +macro _GetNewID +{ + Tool $2003 +} +;~DeleteID MAC +; PHW ]1 +macro _DeleteID +{ + Tool $2103 +} +;~StatusID MAC +; PHW ]1 +macro _StatusID +{ + Tool $2203 +} +;~IntSource MAC +; PHW ]1 +macro _IntSource +{ + Tool $2303 +} +;~FWEntry MAC +; PHS 4 +; PxW ]1;]2;]3;]4 +macro _FWEntry +{ + Tool $2403 +} +;~GetTick MAC +; PHS 2 +macro _GetTick +{ + Tool $2503 +} +;~PackBytes MAC +; P1SL ]1 +; PxL ]2;]3 +; PHW ]4 +macro _PackBytes +{ + Tool $2603 +} +;~UnPackBytes MAC +; P1SL ]1 +; PHW ]2 +; PxL ]3;]4 +macro _UnPackBytes +{ + Tool $2703 +} +;~Munger MAC +; P1SL ]1 +; PxL ]2;]3 +; PHWL ]4;]5 +; PHWL ]6;]7 +macro _Munger +{ + Tool $2803 +} +;~GetIRQEnable MAC +; PHA +macro _GetIRQEnable +{ + Tool $2903 +} +;~SetAbsClamp MAC +; PxW ]1;]2;]3;]4 +macro _SetAbsClamp +{ + Tool $2A03 +} +;~GetAbsClamp MAC +; PHS 4 +macro _GetAbsClamp +{ + Tool $2B03 +} +macro _SysBeep +{ + Tool $2C03 +} +;~AddToQueue MAC +; PxL ]1;]2 +macro _AddToQueue +{ + Tool $2E03 +} +;~DeleteFromQueue MAC +; PxL ]1;]2 +macro _DeleteFromQueue +{ + Tool $2F03 +} +;~SetInterruptState MAC +; PHLW ]1;]2 +macro _SetInterruptState +{ + Tool $3003 +} +;~GetInterruptState MAC +; PHLW ]1;]2 +macro _GetInterruptState +{ + Tool $3103 +} +;~GetIntStateRecSize MAC +; PHA +macro _GetIntStateRecSize +{ + Tool $3203 +} +;~ReadMouse2 MAC +; PHS 3 +macro _ReadMouse2 +{ + Tool $3303 +} +;~GetCodeResConverter MAC +; PHS 2 +macro _GetCodeResConverter +{ + Tool $3403 +} +macro _GetROMResource +{ + Tool $3503 +} +macro _ReleaseROMResource +{ + Tool $3603 +} +macro _ConvSeconds +{ + Tool $3703 +} +macro _SysBeep2 +{ + Tool $3803 +} +macro _VersionString +{ + Tool $3903 +} +macro _WaitUntil +{ + Tool $3A03 +} +macro _StringToText +{ + Tool $3B03 +} +macro _ShowBootInfo +{ + Tool $3C03 +} +macro _ScanDevices +{ + Tool $3D03 +} +macro _AlertMessage +{ + Tool $3E03 +} +macro _DoSysPrefs +{ + Tool $3F03 +} + diff --git a/samples/apple2gs/gsos/macros/Util.Macs.s b/samples/apple2gs/gsos/macros/Util.Macs.s new file mode 100644 index 0000000..f5aefb8 --- /dev/null +++ b/samples/apple2gs/gsos/macros/Util.Macs.s @@ -0,0 +1,788 @@ +*================================================= +* 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 +*------------------------------------------------- + if 0 +;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 + endif +macro PushLong value +{ + pea $value>>16 + pea $value +} + +macro PushWord value +{ + lda value + pha +} + if 0 +;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 +; <<< + endif +macro Tool _toolNum +{ + LDX #_toolNum ; load tool call # + JSL $E10000 ; go to dispatcher +} + if 0 +;************************************************** +;* 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 +; <<< + endif +