Under Charm Routine
$03/AB3E BD 04 20 LDA $2004,x[$7E:2004] A:0000 X:0000 Y:0012 P:envMxdiZc - Load Status Byte 02 into A.
$03/AB41 29 08 AND #$08 A:0008 X:0000 Y:0012 P:envMxdizc - Is it Charm?
$03/AB43 F0 05 BEQ $05 [$AB4A] A:0008 X:0000 Y:0012 P:envMxdizc - If not, branch.
$03/AB45 20 AD AB JSR $ABAD [$03:ABAD] A:0008 X:0000 Y:0012 P:envMxdizc - Jump to Subroutine.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/ABAD A6 A6 LDX $A6 [$00:00A6] A:0008 X:0000 Y:0012 P:envMxdizc - Load Target Identifier.
$03/ABAF 9E 53 20 STZ $2053,x[$7E:2053] A:0008 X:0000 Y:0012 P:envMxdiZc - Store Zero in Monster Target
$03/ABB2 9E 54 20 STZ $2054,x[$7E:2054] A:0008 X:0000 Y:0012 P:envMxdiZc - Store Zero in Party Target
$03/ABB5 20 8B 85 JSR $858B [$03:858B] A:0008 X:0000 Y:0012 P:envMxdiZc - Jump to Subroutine (Random Number)
$03/ABB8 C9 46 CMP #$46 A:0025 X:0000 Y:0012 P:envMxdizc - Compare the number to 46
$03/ABBA B0 24 BCS $24 [$ABE0] A:0025 X:0000 Y:0012 P:eNvMxdizc - If greater than 46, branch to normal Fight Routine
$03/ABBC AE 34 35 LDX $3534 [$7E:3534] A:0025 X:0000 Y:0012 P:eNvMxdizc - Load Slot into X.
$03/ABBF A0 05 00 LDY #$0005 A:0025 X:0000 Y:0012 P:envMxdiZc - Load 0005 into Y.
$03/ABC2 BD 03 33 LDA $3303,x[$7E:3303] A:0025 X:0000 Y:0005 P:envMxdizc - Load A from Command Locations.
$03/ABC5 C9 02 CMP #$02 A:0000 X:0000 Y:0005 P:envMxdiZc - Is it Black Magic?
$03/ABC7 F0 0D BEQ $0D [$ABD6] A:0000 X:0000 Y:0005 P:eNvMxdizc - If so branch.
------------------------------------------------------------------------------------------------------------------
$03/ABC9 C9 03 CMP #$03 A:0000 X:0000 Y:0005 P:eNvMxdizc - Is it White Magic?
$03/ABCB F0 09 BEQ $09 [$ABD6] A:0000 X:0000 Y:0005 P:eNvMxdizc - If so branch.
--------------------------------------------------------------------------------------------------------------------
$03/ABCD E8 INX A:0000 X:0000 Y:0005 P:eNvMxdizc - +4
$03/ABCE E8 INX A:0000 X:0001 Y:0005 P:envMxdizc
$03/ABCF E8 INX A:0000 X:0002 Y:0005 P:envMxdizc
$03/ABD0 E8 INX A:0000 X:0003 Y:0005 P:envMxdizc
$03/ABD1 88 DEY A:0000 X:0004 Y:0005 P:envMxdizc -1 Y
$03/ABD2 D0 EE BNE $EE [$ABC2] A:0000 X:0004 Y:0004 P:envMxdizc - Branch back if not gone through all five commands looking for White/Black Magic.
$03/ABD4 80 0A BRA $0A [$ABE0] A:0001 X:0014 Y:0000 P:envMxdiZc - Branch always.
---------------------------------------------------------------------------------------------------------------------
$03/ABD6 64 90 STZ $90 [$00:0090] A:0002 X:0058 Y:0004 P:envMxdiZC - Store Zero in 90
$03/ABD8 20 FD AB JSR $ABFD [$03:ABFD] A:0002 X:0058 Y:0004 P:envMxdiZC - Jump to Subroutine
---------------------------------------------------------------------------------------------------------------------
$03/ABE0 A6 A6 LDX $A6 [$00:00A6] A:0001 X:0014 Y:0000 P:envMxdiZc - Load Slot Identity.
$03/ABE2 A9 80 LDA #$80 A:0001 X:0000 Y:0000 P:envMxdiZc - Load 80 into A.
$03/ABE4 9D 50 20 STA $2050,x[$7E:2050] A:0080 X:0000 Y:0000 P:eNvMxdizc - Store A in 2050
$03/ABE7 9E 51 20 STZ $2051,x[$7E:2051] A:0080 X:0000 Y:0000 P:eNvMxdizc - Store Zero in 2051 (Fight)
$03/ABEA 20 82 85 JSR $8582 [$03:8582] A:0080 X:0000 Y:0000 P:eNvMxdizc - Jump to Subroutine (0-4 Random Choice)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/8582 A2 00 00 LDX #$0000 A:0080 X:0000 Y:0000 P:eNvMxdizc - Load 00 into X.
$03/8585 A9 04 LDA #$04 A:0080 X:0000 Y:0000 P:envMxdiZc - Load 04 into A.
$03/8587 20 79 83 JSR $8379 [$03:8379] A:0004 X:0000 Y:0000 P:envMxdizc - Jump to RNG.
$03/8379 E2 10 SEP #$10 A:0004 X:0000 Y:0000 P:envMxdizc - Set Processor to 10.
$03/858A 60 RTS A:0004 X:0000 Y:0000 P:envMxdizc - Return
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/ABEE BD 40 35 LDA $3540,x[$7E:3544] A:0004 X:0004 Y:0000 P:envMxdizc - Load Slot to Target ?Status?
$03/ABF1 D0 F7 BNE $F7 [$ABEA] A:0000 X:0004 Y:0000 P:envMxdiZc - Branch if ?Incapacitated? back to roll again.
$03/ABF3 7B TDC A:0000 X:0004 Y:0000 P:envMxdiZc - Tranfer Direct Page.
$03/ABF4 20 5F 85 JSR $855F [$03:855F] A:0000 X:0004 Y:0000 P:envMxdiZc - Jump to Subroutine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/855F 1F FE FE 13 ORA $13FEFE,x[$13:FF02] A:0000 X:0004 Y:0000 P:envMxdiZc - ??
$03/8563 60 RTS A:0008 X:0004 Y:0000 P:envMxdizc - Return
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/ABF7 A6 A6 LDX $A6 [$00:00A6] A:0008 X:0004 Y:0000 P:envMxdizc - Load Slot Identifier
$03/ABF9 9D 54 20 STA $2054,x[$7E:2054] A:0008 X:0000 Y:0000 P:envMxdiZc - Store A in Party Target.
$03/ABFC 60 RTS A:0008 X:0000 Y:0000 P:envMxdiZc - Return
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/ABFD AE 36 35 LDX $3536 [$7E:3536] A:0002 X:0058 Y:0004 P:envMxdiZC - Load Spell Pointer
$03/AC00 86 A9 STX $A9 [$00:00A9] A:0002 X:0360 Y:0004 P:envMxdizC - Store X in A9.
$03/AC02 A0 30 00 LDY #$0030 A:0002 X:0360 Y:0004 P:envMxdizC - Load 0030 into Y.
$03/AC05 BD 7A 2C LDA $2C7A,x[$7E:2FDA] A:0002 X:0360 Y:0030 P:envMxdizC - Load A from Spell Menu Data
$03/AC08 10 0C BPL $0C [$AC16] A:0020 X:0360 Y:0030 P:envMxdizC -Branch if Positive (meaning a spell is there).
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
$03/AC16 7B TDC A:0020 X:0360 Y:0030 P:envMxdizC - Transfer Direct Page
$03/AC17 AA TAX A:0000 X:0360 Y:0030 P:envMxdiZC - Transfer A to X.
$03/AC18 A9 2F LDA #$2F A:0000 X:0000 Y:0030 P:envMxdiZC - Load 2F into A.
$03/AC1A 20 79 83 JSR $8379 [$03:8379] A:002F X:0000 Y:0030 P:envMxdizC - Jump to RNG
$03/AC1E 8E 3D 39 STX $393D [$7E:393D] A:0002 X:0002 Y:0030 P:envMxdizc - Store X in 393D.
$03/AC21 A2 04 00 LDX #$0004 A:0002 X:0002 Y:0030 P:envMxdizc - Load 04 into X.
$03/AC24 8E 3F 39 STX $393F [$7E:393F] A:0002 X:0004 Y:0030 P:envMxdizc - Store X in 393F.
$03/AC27 20 B9 83 JSR $83B9 [$03:83B9] A:0002 X:0004 Y:0030 P:envMxdizc - Jump to Subroutine (Divides several 393X values)
$03/AC2A 18 CLC A:0000 X:0000 Y:0030 P:envMxdiZc - Clear Carry Flag.
$03/AC2B A5 A9 LDA $A9 [$00:00A9] A:0000 X:0000 Y:0030 P:envMxdiZc - Load A from A9.
$03/AC2D 6D 41 39 ADC $3941 [$7E:3941] A:0060 X:0000 Y:0030 P:envMxdizc - Add value from 3941 onto A.
$03/AC30 85 AB STA $AB [$00:00AB] A:0068 X:0000 Y:0030 P:envMxdizc - Store A in AB.
$03/AC32 A5 AA LDA $AA [$00:00AA] A:0068 X:0000 Y:0030 P:envMxdizc - Load A from AA.
$03/AC34 6D 42 39 ADC $3942 [$7E:3942] A:0003 X:0000 Y:0030 P:envMxdizc - Add value from 3942 onto A.
$03/AC37 85 AC STA $AC [$00:00AC] A:0003 X:0000 Y:0030 P:envMxdizc - Store A in AC.
$03/AC39 A6 AB LDX $AB [$00:00AB] A:0003 X:0000 Y:0030 P:envMxdizc - Load X from AB.
$03/AC3B BD 7A 2C LDA $2C7A,x[$7E:2FE2] A:0003 X:0368 Y:0030 P:envMxdizc - Load A from next Spell.
$03/AC3E 85 AD STA $AD [$00:00AD] A:0080 X:0368 Y:0030 P:eNvMxdizc - Store A in AD.
$03/AC40 30 D4 BMI $D4 [$AC16] A:0080 X:0368 Y:0030 P:eNvMxdizc - Branch back if 80.
------------------------------------------------------------------------------------------------------------------------------
$03/AC42 BD 7B 2C LDA $2C7B,x[$7E:2FDB] A:0020 X:0360 Y:0030 P:envMxdizc - Load Spell Number into A.
$03/AC45 A6 A6 LDX $A6 [$00:00A6] A:001C X:0360 Y:0030 P:envMxdizc - Load Slot ID into A.
$03/AC47 9D 52 20 STA $2052,x[$7E:21D2] A:001C X:0180 Y:0030 P:envMxdizc - Store A in Spell Choice.
$03/AC4A A9 20 LDA #$20 A:001C X:0180 Y:0030 P:envMxdizc - Load 20 into A.
$03/AC4C 9D 50 20 STA $2050,x[$7E:21D0] A:0020 X:0180 Y:0030 P:envMxdizc - Store A in 2050.
$03/AC4F A9 02 LDA #$02 A:0020 X:0180 Y:0030 P:envMxdizc - Load 02 into A.
$03/AC51 9D 51 20 STA $2051,x[$7E:21D1] A:0002 X:0180 Y:0030 P:envMxdizc - Store A in Command.
$03/AC54 A5 AD LDA $AD [$00:00AD] A:0002 X:0180 Y:0030 P:envMxdizc - Load AD into A.
$03/AC56 29 40 AND #$40 A:0020 X:0180 Y:0030 P:envMxdizc - Get rid of all bytes that not 40.
$03/AC58 D0 25 BNE $25 [$AC7F] A:0000 X:0180 Y:0030 P:envMxdiZc - Branch if not 00.
-------------------------------------------------------------------------------------------------------------------
$03/AC5A A5 AD LDA $AD [$00:00AD] A:0000 X:0180 Y:0030 P:envMxdiZc - Load AD into A (Targeting?)
$03/AC5C 29 10 AND #$10 A:0020 X:0180 Y:0030 P:envMxdizc - Get rid of all bytes that are not 10.
$03/AC5E F0 17 BEQ $17 [$AC77] A:0000 X:0180 Y:0030 P:envMxdiZc - Branch if 00.
-------------------------------------------------------------------------------------
---------------------------------------------------------------------------------
$03/AC77 A9 FF LDA #$FF A:0000 X:0180 Y:0030 P:envMxdiZc - Load FF into A.
$03/AC79 A6 A6 LDX $A6 [$00:00A6] A:00FF X:0180 Y:0030 P:eNvMxdizc - Load A from A6.
$03/AC7B 9D 53 20 STA $2053,x[$7E:21D3] A:00FF X:0180 Y:0030 P:envMxdizc - Store A in Party Target.
$03/AC7E 60 RTS A:00FF X:0180 Y:0030 P:envMxdizc - Return
Whew! A lot of coding there, but worth it in some respects, the way the game draws spells can easily be discerned, but I somewhat doubt this set is used for monsters at all.