TransWarpGS-ROM/src/twgs_1.8s/twgs.3.s

2269 lines
88 KiB
ArmAsm

*
Init_Intro_Graphics SEP #$20
NOP
LDA #$41
STAL $E0C029
REP #$20
NOP
LDX #$8000
LDA #$0000
:loop STAL $E11FFE,X
DEX
DEX
BNE :loop
SEP #$20
NOP
LDA #$C1
STAL $E0C029
REP #$20
NOP
LDA #$000F
LDX #$0000
LDY #$003C
JSR Set_SCBs_to_Pal
PHB
LDX #LE417
LDY #$0200
LDA #$00B5
; MVN TWGS_Control,ptr000000 , $BC0000,$000000
MVN $BC0000,$000000
PLB
RTS
Copy_SCB_Tail SEP #$30
NOP
STY $CB
LDY #$00
:scb_loop LDA SCB_Tail_Data,Y
STAL $E19D00,X
INY
INX
CPX $CB
BCC :scb_loop
REP #$30
NOP
RTS
SCB_Tail_Data HEX 000000010101 ; probably one of the "TransWarp GS" tails
HEX 020304050606
HEX 0708090A0B0B
Set_SCBs_to_Pal INY
STY $CB
SEP #$20
NOP
:loop STAL $E19D00,X
INX
CPX $CB
BCC :loop
REP #$20
NOP
RTS
Get_Byte_from_SourcePtr LDA [SrcPtr32]
INC SrcPtr32 ; inc low word of pointer
AND #$00FF ; strip high byte
RTS
Put_Byte_to_DestPtr SEP #$20
NOP
STA [DstPtr32]
REP #$20
NOP
INC DstPtr32 ; inc low word of pointer
RTS
Unpack_Data LDX #$0001
JSR Get_Byte_from_SourcePtr
CMP #$0080
BCC :literal_data ; ?
AND #$0077
PHA
JSR Get_Byte_from_SourcePtr
TAX
BEQ :done
PLA
:literal_data CLC
ADC $E1
:repeat_loop JSR Put_Byte_to_DestPtr
DEX
BNE :repeat_loop
BRA Unpack_Data
:done PLA
RTS
LE227 JSR Get_Byte_from_SourcePtr
JSR Put_Byte_to_DestPtr
DEX
BNE LE227
RTS
Unpack_to_Screen STZ $E1
LDA #^Image_Data_Packed ; #$00BC
STA SrcPtr32+2
LDA #$00E1
STA DstPtr32+2
LDA #$2000
LE240 STA DstPtr32
LDA #Image_Data_Packed
STA SrcPtr32
JSR Unpack_Data
LDA #Image_Data2_Packed
STA SrcPtr32
JSR Unpack_Data
RTS
Load_Palettes LDX #$0000
LDY #$0000
:copy_rgb_word LDA Master_Palette_Data,Y
STAL $E19E00,X
INY
INY
TYA
AND #$001F ; keeps resetting source index after each palette written
TAY
INX
INX
CPX #$01E0 ; palettes 0 - 14 now the same?
BCC :copy_rgb_word
LDY #$0000
:gen_fade_col_loop LDA Color_Fade_Lookup_Values,Y
AND #$00FF
ASL
TAX
LDA Color_Fade_RGB_Table,X
PHA
TYA
ASL ; *2
ASL ; *4
ASL ; *8
ASL ; *16
ASL ; *32 = same color in the next palette
TAX ; as our index
PLA
STAL $E19E0E,X ; store next fade color
INY
CPY #$000C ; not all palettes... up to pal 12
BCC :gen_fade_col_loop
LDX #$0000
:next_pal PHX
LDA Pattern_Table,X
AND #$00FF
ASL
ASL
TAY
TXA
XBA
LSR
LSR
LSR
TAX
CLC
ADC #$0010
STA $CB
LDA Pattern_RGB_Table,Y
:create_rgb STAL $E19E10,X
CLC
ADC Pattern_RGB_Table+2,Y
INX
INX
CPX $CB
BCC :create_rgb
PLX
INX
CPX #$000C
BCC :next_pal
RTS
Master_Palette_Data HEX 00000600270149047B07AD0AFF0FDF08
HEX 00002202440466068808AA0ACC0CFF0F
Color_Fade_Lookup_Values HEX 000000010304030403020100
Color_Fade_RGB_Table DW $08DF
DW $09DF
DW $0BEF
DW $0CEF
DW $0EFF
Pattern_Table HEX 000102020203030404040505
Pattern_RGB_Table HEX 100020001001200210011002
HEX 000100020101020201000200
Setup_Palette_12 LDX #$001F
:copy_loop LDA Palette_12_Data,X
STAL $E19F80,X
DEX
BPL :copy_loop
RTS
Palette_12_Data HEX 000000040007000B000F700FF00FF007
HEX F000F700FF007F000F000B0007000400
* @todo: Investigate. Possibly the animation vectors.
Generate_Cached_Lookup_Table LDA #$2000
LDX #$0000
LDY #$0012
:loop STA Buffer_36,X
CLC
ADC #$008C ; 140
INX
INX
DEY
BNE :loop
LDA #$29D8
LDX #$0000
LDY #$0012
:loop2 STA Buffer2_36,X
CLC
ADC #$001F ; 31
INX
INX
DEY
BNE :loop2
RTS
SHGR_Offset_for_X_Y TYA
XBA
LSR
STA DstPtr32
LSR
LSR
ADC DstPtr32
STA DstPtr32
TXA
ADC DstPtr32
ADC #$2000
TAY
RTS
Fill_Bank_E1_with_Byte PHA
TXA
TYX
TAY
PLA
SEP #$20
NOP
:fill_loop STAL $E10000,X
INX
DEY
BNE :fill_loop
REP #$20
NOP
RTS
Generate_Grayscale_Color_15 LDA #$0000
LDX #$0000
:write_color_15_loop STAL $E19E1E,X
PHA
TXA
CLC
ADC #$0020
TAX
PLA
ADC #$0111
CPX #$0200
BCC :write_color_15_loop
RTS
LE3B6 PHB
PEA $E1E1 ;
PLB ; set bank to E1
PLB ;
STA $CB
TXA
EOR #$FFFF
SEC
ADC #$00A0
STA $F5
:loop PHX
SEP #$20
NOP
LDA #$00
:zero STA |$0000,Y
INY
DEX
BNE :zero
REP #$20
NOP
TYA
CLC
ADC $F5
TAY
PLX
DEC $CB
BNE :loop
PLB
RTS
LE3E4 PHB
PEA $E1E1
PLB
PLB
STX $FF
SEP #$20
NOP
LDA #$01
STA $E1
XBA
LDA #$00
LE3F6 CLC
LE3F7 ADC #$0F
LE3F9 CMP $FF
BCC LE403
SBC $FF
INC $E1
BRA LE3F9
LE403 XBA
ASL
ASL
ASL
ASL
ORA $E1
STA |$0000,Y
XBA
INY
DEX
BNE LE3F6
REP #$20
NOP
PLB
RTS
*-----------
LE417 = *
HEX 4C77028BA9E1E148ABABA90000E220EA
HEX A5E3C5E5B00285E5A5E3E5E5EB1AEBC5
HEX E5B0F78F920200EB8F9C0200A5E58FA0
HEX 02008F9402008F980200C220EAA9A000
HEX 38E5E585F564EFA5ED85F1A6F3207702
HEX A5EF1865EB85EF38E5ED901085EFA5F3
HEX 1865E385F3A5EF38E5EDB0F0981865F5
HEX A8C6F1D0D6AB6B8A8F8B0200988F8E02
HEX 00E230EAA900AAA8EB18BD0000990000
HEX EB6900C9009002E900EB8A6900AAC8C0
HEX 0090E7C230EA8A186F8B0200AA98186F
HEX 8E0200A860
*--- $0200 code for reference
* JMP L0277
*
*L0203 PHB
* LDA #$E1E1
* PHA
* PLB
* PLB
* LDA #$0000
* SEP #$20
* NOP
* LDA $E3
* CMP $E5
* BCS L0218
* STA $E5
*L0218 LDA $E3
*L021A SBC $E5
* XBA
* INC
* XBA
* CMP $E5
* BCS L021A
* STAL L0291+1
* XBA
* STAL L029B+1
* LDA $E5
* STAL L029F+1
* STAL L0293+1
* STAL L0297+1
* REP #$20
* NOP
* LDA #$00A0
* SEC
* SBC $E5
* STA $F5
* STZ $EF
* LDA $ED
* STA $F1
*L024B LDX $F3
* JSR L0277
* LDA $EF
* CLC
* ADC $EB
* STA $EF
* SEC
* SBC $ED
* BCC L026C
*L025C STA $EF
* LDA $F3
* CLC
* ADC $E3
* STA $F3
* LDA $EF
* SEC
* SBC $ED
* BCS L025C
*L026C TYA
* CLC
* ADC $F5
* TAY
* DEC $F1
* BNE L024B
* PLB
* RTL
*
*L0277 TXA
* STAL L028A+1
* TYA
* STAL L028D+1
* SEP #$30
* NOP
* LDA #$00
* TAX
* TAY
* XBA
* CLC
*L028A LDA |$0000,X
*L028D STA |$0000,Y
* XBA
*L0291 ADC #$00
*L0293 CMP #$00
* BCC L0299
*L0297 SBC #$00
*L0299 XBA
* TXA
*L029B ADC #$00
* TAX
* INY
*L029F CPY #$00
* BCC L028A
* REP #$30
* NOP
* TXA
* CLC
* ADCL L028A+1
* TAX
* TYA
* CLC
* ADCL L028D+1
* TAY
* RTS
*----------- END OF $200 CODE
LE4CC STZ $D7
STZ $D9
STZ $DB
RTS
LE4D3 LDA $D9
BNE LE4ED
JSR Get_Byte_from_SourcePtr
PHA
AND #$007F
STA $D9
PLA
AND #$0080
STA $D7
BEQ LE4ED
JSR Get_Byte_from_SourcePtr
STA $DB
LE4ED LDA $D7
BEQ LE4F5
LDA $DB
BRA LE4F8
LE4F5 JSR Get_Byte_from_SourcePtr
LE4F8 DEC $D9
RTS
LE4FB STZ $DD
STZ $DF
RTS
LE500 LDA $DD
BNE LE50F
JSR LE4D3
XBA
STA $DF
LDA #$0004
STA $DD
LE50F LDA #$0000
ASL $DF
BCC LE519
LDA #$00F0
LE519 ASL $DF
BCC LE520
ORA #$000F
LE520 DEC $DD
RTS
LE523 STA $E1
STX SrcPtr32
LDA #^TWGS_Control ; $00BC
STA SrcPtr32+2
LDX #$0000
JSR SHGR_Offset_for_X_Y
STY $D3
LDA #$00E1
STA $D5
JSR Get_Byte_from_SourcePtr
INC
STA $FF
LDA #$00A0
SEC
SBC $FF
LSR
CLC
ADC $D3
STA $D3
JSR Get_Byte_from_SourcePtr
INC
STA $CD
RTS
LE552 JSR LE523
JSR LE4CC
JSR LE4FB
LE55B LDA $FF
STA $CB
LE55F JSR LE500
AND $E1
EOR [$D3]
STA [$D3]
INC $D3
DEC $CB
BNE LE55F
LDA $D3
SEC
SBC $FF
ADC #$009F
STA $D3
DEC $CD
BNE LE55B
RTS
LE57D JSR LE523
JSR LE4CC
LE583 LDA $FF
STA $CB
LE587 JSR LE4D3
EOR [$D3]
JSR Put_Byte_to_DestPtr
DEC $CB
BNE LE587
LDA $D3
SEC
SBC $FF
ADC #$009F
STA $D3
DEC $CD
BNE LE583
RTS
LE5A2 JSR Init_Intro_Graphics
JSR Unpack_to_Screen
JSR Load_Palettes
JSR Generate_Cached_Lookup_Table
RTS
Play_Startup_Intro PHP
REP #$30
NOP
LDA TWGS_Config_Byte
AND #$0004
BEQ LE60C
SEP #$20
NOP
LDAL $E0C029 ; store gfx mode
PHA
REP #$20
NOP
PHB
PHD
PHK
PLB
PEA $0000
PLD
JSR Read_TWGS_Mode
PHA
JSR IRQ_Logic_OFF
JSR GS_FAST
PHA
JSR TWGS_ON
LE5DB PHA
STZ Fake_Key_Flag
JSR LE5A2
JSR LA8F7
JSR LA95D
JSR LE62E
JSR LE93F
JSR LA9A0
PLA
JSR SET_TW_MODE
PLA
JSR GS_Speed_Restore
PLA
JSR Set_TWGS_Mode_Keep_Cache
PLD
PLB
SEP #$20
NOP
JSR Clear_Text_Pages_E0_E1
PLA
STAL $E0C029
REP #$20
NOP
LE60C PLP
RTS
MX %10
Clear_Text_Pages_E0_E1 LDX #$0000
LDA #$A0
LE613 STAL $E00400,X
STAL $E10400,X
INX
CPX #$0400
BCC LE613
STAL $E0C051
STAL $E0C052
STAL TXTPAGE1
RTS
MX %00
LE62E STZ $BD
STZ $B9
STZ $BB
LE634 JSR LE649
JSR LE7E6
JSR Check_Key
BCS LE648
INC $BD
LDA $BD
CMP #$5DD4
BCC LE634
LE648 RTS
LE649 LDA $B9
BNE LE672
LDA $BD
CMP #$0014
BCC LE66B
JSR Generate_Grayscale_Color_15
LDA #LDE07
STA $9F
STA $A5
STA $A7
STZ $AF
STZ $B1
STZ $B3
STZ $B5
INC $B9
LE66A RTS
LE66B LDY #$2710
LE66E DEY
BNE LE66E
RTS
LE672 CMP #$0001
BNE LE66A
LDA ($9F)
AND #$00FF
LSR
STA $C1
LDA #$00A0
SEC
SBC $C1
SBC $C1
STA $F7
LDY #$0002
LDA ($9F),Y
LE68E AND #$00FF
STA $F9
DEY
LDA ($9F),Y
AND #$00FF
STA $A1
CLC
ADC $F9
STA $A3
LDX $A1
LDY $A3
JSR Copy_SCB_Tail
LDX $C1
LDY $A1
JSR SHGR_Offset_for_X_Y
JSR LEB2D
LDA $9F
SEC
SBC #$0080
CMP #LDE07
BCS LE6BF
LDA #LDE07
LE6BF STA $A9
JSR LE74A
LDA $B1
CLC
ADC #$0005
STA $B1
LE6CC SEC
SBC #$001E
BCC LE6E0
STA $B1
LDA $B5
CLC
ADC #$0005
STA $B5
LDA $B1
BRA LE6CC
LE6E0 LDA $B5
CLC
ADC $AF
PHA
AND #$00FF
STA $AF
PLA
XBA
AND #$00FF
ASL
ASL
CLC
ADC $9F
STA $9F
CMP #Init_Intro_Graphics
BCC LE705
LDA $9F
STA $A9
JSR LE74A
INC $B9
LE705 RTS
LE706 LDA ($AB)
AND #$00FF
LSR
STA $9B
LDY #$0005
LDA ($AB),Y
AND #$00FF
STA $9D
LDY #$0001
LDA ($AB),Y
AND #$00FF
CMP $9D
BCC LE72D
BEQ LE748
INY
CLC
ADC ($AB),Y
AND #$00FF
LE72D CMP $A3
BCS LE735
CMP $A1
BCS LE748
LE735 PHA
TAY
LDX $9B
JSR SHGR_Offset_for_X_Y
LDA #$00A0
LE73F SEC
SBC $9B
SBC $9B
TAX
PLA
CLC
RTS
LE748 SEC
RTS
LE74A LDA $A5
LE74C STA $AB
CMP $A9
BCS LE773
JSR LE706
BCS LE76B
PHA
LDA #$0000
JSR Fill_Bank_E1_with_Byte
PLX
SEP #$20
NOP
LDA #$00
STAL $E19D00,X
REP #$20
NOP
LE76B LDA $AB
CLC
ADC #$0004
BRA LE74C
LE773 STA $A5
STZ $AD
LE777 STA $AB
CMP $A7
BCS LE79C
JSR LE706
BCS LE792
TAX
LDY $AD
SEP #$20
NOP
LDA LE7C6,Y
STAL $E19D00,X
REP #$20
NOP
LE792 INC $AD
LDA $AB
CLC
ADC #$0004
BRA LE777
LE79C STA $AB
CMP $9F
BCS LE7C3
JSR LE706
BCS LE7BB
PHA
LDA #$00FF
JSR Fill_Bank_E1_with_Byte
PLX
SEP #$20
NOP
LDA #$0F
STAL $E19D00,X
REP #$20
NOP
LE7BB LDA $AB
CLC
LE7BE ADC #$0004
BRA LE79C
LE7C3 STA $A7
RTS
LE7C6 HEX 01010101010202020203030304040405
HEX 050506060607070808090A0B0C0D0E0F
LE7E6 LDA $BB
BNE LE819
LDA $BD
CMP #$1F54
BCC LE818
JSR Load_Palettes
LDX #$005C
LDY #$006E
JSR Copy_SCB_Tail
LDA #$FFFF
STA $A9
LDA #$0012
STA $9F
LDA #$0001
STA $BF
LDA #$0001
STA $AD
LDA #$0002
STA $C9
INC $BB
LE818 RTS
LE819 CMP #$0001
BNE LE832
JSR LE88D
BCC LE825
INC $BF
LE825 JSR LE881
LDA $BF
CMP #$002E
BCC LE831
INC $BB
LE831 RTS
LE832 CMP #$0002
BNE LE84F
JSR LE88D
BCC LE840
DEC $9F
INC $BF
LE840 JSR LE881
LDA $9F
CMP #$FFEE
BNE LE84E
INC $BB
STZ $A9
LE84E RTS
LE84F CMP #$0003
BNE LE86C
JSR LE88D
BCC LE85D
INC $9F
DEC $BF
LE85D JSR LE881
LDA $9F
BNE LE86B
INC $BB
LDA #$005A
STA $AB
LE86B RTS
LE86C CMP #$0004
BNE LE880
JSR LE881
JSR LE88D
BCC LE87F
DEC $AB
BNE LE87F
INC $BB
LE87F RTS
LE880 RTS
LE881 LDX $BF
LDY #$005C
JSR SHGR_Offset_for_X_Y
JSR LE89A
RTS
LE88D DEC $C9
BNE LE898
LDA #$0002
STA $C9
SEC
RTS
LE898 CLC
RTS
LE89A PHB
LDY #$005C
LDX #$0000
JSR SHGR_Offset_for_X_Y
LDA #$E1E1
PHA
PLB
PLB
LDA $9F
BPL LE8B2
EOR #$FFFF
INC
LE8B2 STA $A3
LDA $BF
STA $A5
STZ $A1
LDA #$0081
SEC
SBC $BF
STA $A7
LDX #$29D8
LE8C5 JSR LE911
LDA $A9
BEQ LE8D1
DEY
STA |$0000,Y
INY
LE8D1 LDA #$001E
MVN $E10000,$E10000
LDA #$0000
STA |$0000,Y
TYA
CLC
ADC $A7
TAY
LDA $A1
CLC
ADC $A3
CMP #$0012
BCC LE8EF
SBC #$0012
LE8EF STA $A1
BCC LE901
LDA $9F
BPL LE8FD
DEC $A5
INC $A7
BRA LE901
LE8FD INC $A5
DEC $A7
LE901 CPX #$2C06
BCC LE8C5
PLB
DEC $AD
BPL LE910
LDA #$000C
STA $AD
LE910 RTS
LE911 LDA $AD
BNE LE939
TYA
CLC
ADC $A5
STA $9B
SEP #$20
NOP
LE91E LDA |$0000,Y
CMP #$88
BCC LE930
BNE LE92B
LDA #$00
BRA LE92D
LE92B SBC #$11
LE92D STA |$0000,Y
LE930 INY
CPY $9B
BCC LE91E
REP #$20
NOP
RTS
LE939 TYA
CLC
LE93B ADC $A5
TAY
RTS
LE93F JSR Check_Key
BCC LE945
RTS
LE945 JSR Setup_Palette_12
LDA #$00FF
STA $9F
TAY
JSR LEA9F
BRA LE989
LE953 LDY $9F
JSR LEA9F
JSR LEA35
SEP #$20
NOP
LDX $B5
LDA #$0C
STAL $E19D00,X
REP #$20
NOP
LDY $C1
LDX $F7
JSR LE3E4
LDA $B7
CLC
ADC $FD
TAX
SEP #$20
NOP
LDA #$0C
STAL $E19D00,X
REP #$20
NOP
LDY $C3
LDX $FB
JSR LE3E4
LE989 LDA $AD
STA $F7
LDA $AF
STA $F9
LDX $A9
STX $B1
LDY $AB
STY $B5
JSR SHGR_Offset_for_X_Y
STY $C1
JSR LEB2D
LDA $A5
STA $FB
LDA $A7
STA $FD
LDX $A1
STX $B3
LDY $A3
STY $B7
JSR SHGR_Offset_for_X_Y
STY $BF
JSR LEB4D
STY $C3
JSR Check_Key
BCS LE9D0
LDA $9F
SEC
SBC #$000C
STA $9F
BCS LE953
JSR LE9DE
JSR LE9D1
LE9D0 RTS
LE9D1 LDY #$0514
LE9D4 LDX #$0320
LE9D7 DEX
BNE LE9D7
DEY
BNE LE9D4
RTS
LE9DE LDA #$0045
PHA
LDA #$005C
CLC
ADC #$0012
PHA
LE9EA LDA $03,S
TAY
LDX #$0000
JSR SHGR_Offset_for_X_Y
LDX #$00A0
LDA #$0000
JSR Fill_Bank_E1_with_Byte
LDA $01,S
TAY
LDX #$0000
JSR SHGR_Offset_for_X_Y
LDX #$00A0
LDA #$0000
JSR Fill_Bank_E1_with_Byte
JSR Delay_YYY
JSR Check_Key
BCS LEA25
LDA $03,S
INC
STA $03,S
LDA $01,S
DEC
STA $01,S
CMP #$0059
BCS LE9EA
LEA25 PLA
PLA
RTS
Delay_YYY LDY #$0032
:outer LDX #$00C8
:inner DEX
BNE :inner
DEY
BNE :outer
RTS
LEA35 LDY $C1
LDA $A9
SEC
SBC $B1
BCC LEA48
BEQ LEA48
TAX
LDA $F9
BEQ LEA48
JSR LE3B6
LEA48 LDA $F7
SEC
SBC $AD
BCC LEA6A
SBC $A9
CLC
ADC $B1
BEQ LEA6A
BMI LEA6A
PHA
LDA $C1
CLC
ADC $F7
SEC
SBC $01,S
TAY
PLX
LDA $F9
BEQ LEA6A
JSR LE3B6
LEA6A LDY $BF
LDA $A1
SEC
SBC $B3
BCC LEA7D
BEQ LEA7D
TAX
LDA $FD
BEQ LEA7D
JSR LE3B6
LEA7D LDA $FB
SEC
SBC $A5
BCC LEA9E
SBC $A1
ADC $B3
BEQ LEA9E
BMI LEA9E
PHA
LDA $BF
CLC
LEA90 ADC $FB
SEC
SBC $01,S
TAY
PLX
LDA $FD
BEQ LEA9E
JSR LE3B6
LEA9E RTS
LEA9F LDA #$008C
JSR LEB12
STA $AD
LDA #$0002
JSR LEB12
EOR #$FFFF
SEC
ADC #$0059
STA $AF
LDA #$0014
JSR LEB12
EOR #$FFFF
SEC
ADC #$0059
STA $AB
LDA $AF
SEC
SBC $AB
STA $AF
LDA #$0046
JSR LEB12
EOR #$FFFF
SEC
ADC #$0050
STA $A9
LDA #$001F
JSR LEB12
STA $A5
LDA #$0015
JSR LEB12
CLC
ADC #$0059
STA $A7
LDA #$0003
JSR LEB12
CLC
ADC #$0059
STA $A3
LDA $A7
SEC
SBC $A3
STA $A7
LDA #$0010
JSR LEB12
EOR #$FFFF
SEC
LEB0C ADC #$0050
STA $A1
RTS
LEB12 SEP #$30
NOP
STY $C5
STA $C7
LDX #$08
TYA
LEB1C LSR $C7
BCC LEB22
ADC $C5
LEB22 ROR
DEX
BNE LEB1C
REP #$30
NOP
AND #$00FF
RTS
LEB2D LDA $F7
STA Display_Width
BEQ :done
LDA $F9
STA Display_Height
BEQ :done
LDA #$008C
STA Image_Width
LDA #$0012
STA Image_Height
LDA #$2000
STA Image_Ptr
JSL $000203
:done RTS
LEB4D LDA $FB
STA Display_Width
BEQ LEB6C
LDA $FD
STA Display_Height
BEQ LEB6C
LDA #$001F
STA Image_Width
LDA #$0012
STA Image_Height
LDA #$29D8
STA Image_Ptr
JSL $000203
LEB6C RTS
LEB6D JSR Check_Key
BCS LEBB1
JSR Clear_Palette_12
LDX #$0082
LDY #$00C7
LDA #$000C
JSR Set_SCBs_to_Pal
JSR LED00
LDX #About_Hardware
LDY #$0082
LDA #$0011
JSR LE552
JSR LEC58
JSR Delay_Check_Key
BCS LEBB1
LDY #About_Hardware
LDX #$EEB7
JSR LEC06
BCS LEBB1
LDX #About_Layout
JSR LEBE9
BCS LEBB1
LDX #About_Firmware
JSR LEC06
LEBB1 BCS LEBE5
LDX #About_Firmware
LDY #$0082
LDA #$0022
JSR LE552
LEBBF LDX #About_AE
LDY #$00A5
JSR LE57D
JSR LECA8
JSR Delay_Check_Key
BCS LEBE5
LDX #About_AE
LDY #$00A5
JSR LE57D
LDX #$0082
LDY #$00C7
LDA #$0000
JSR Set_SCBs_to_Pal
LEBE5 JSR Clear_Palette_12
RTS
LEBE9 PHX
PHY
LDY #$0082
LDA #$0011
JSR LE552
JSR LEC58
PLX
LDY #$0082
LDA #$0022
JSR LE552
JSR Delay_Check_Key
PLY
RTS
LEC06 PHX
PHY
LDY #$0082
LDA #$0022
JSR LE552
JSR LEC80
PLX
LDY #$0082
LDA #$0011
JSR LE552
JSR Delay_Check_Key
PLY
RTS
Clear_Palette_12 LDX #16*2*12 ; #$0180 = palette 12
LDA #$0000
:clear_loop STAL $E19E00,X
INX
INX
CPX #16*2*13 ; #$01A0 = palette 13
BCC :clear_loop
RTS
Delay_Check_Key JSR Check_Key
BCS :done
LDA #$001E
:loop JSR Delay_XXX
PHA
JSR Check_Key
PLA
BCS :done
DEC
BNE :loop
:done RTS
* ~1sec delay @ 7MHz
Delay_XXX LDX #$00FA ; 250
:outer LDY #$00C8 ; 200
:inner DEY
BNE :inner
DEX
BNE :outer
RTS
LEC58 LDA #$0FFF
STA $9B
LDA #$0000
STA $9D
:loop JSR Delay_XXX
LDA $9D
STAL $E19F82
CLC
ADC #$0111
STA $9D
LDA $9B
STAL $E19F84
SEC
SBC #$0111
STA $9B
BCS :loop
RTS
LEC80 LDA #$0FFF
STA $9B
LDA #$0000
STA $9D
LEC8A JSR Delay_XXX
LDA $9D
STAL $E19F84
CLC
ADC #$0111
STA $9D
LDA $9B
STAL $E19F82
SEC
SBC #$0111
STA $9B
BCS LEC8A
RTS
LECA8 LDA #$0000
STA $9B
LDA #$0000
STA $9D
LECB2 JSR Delay_XXX
LDA $9D
LSR
STAL $E19F88
LDA $9D
CLC
ADC #$0001
STA $9D
LDA $9B
STAL $E19F8E
CLC
ADC #$0111
STA $9B
CMP #$1000
BCC LECB2
RTS
LECD6 LDA #$000F
STA $9D
LDA #$0FFF
STA $9B
LECE0 JSR Delay_XXX
LDA $9D
LSR
STAL $E19F88
LDA $9D
SEC
SBC #$0001
STA $9D
LDA $9B
STAL $E19F8E
SBC #$0111
STA $9B
BCS LECE0
RTS
LED00 LDA #$0FFF
STAL $E19F86
RTS
LED08 LDA #$0000
STAL $E19F86
RTS
*-----------
About_Hardware HEX 6319020FC0890005040020001F840001
HEX E08200040E003FF0890005060060001F
HEX 840001E08200020E0082780138880005
HEX 0700E00007840001E08200030E007082
HEX 388800050781E00007840001E0820037
HEX 0E007001FF81F8700E0FC1DF0007C3E0
HEX FF8701F807E0EF807E0E0F7C01FF87FE
HEX 700E3FF1FFC007E7E3FF8707FE1FF8FF
HEX E1FF8E1E3FC038820F0B381C7879E1E0
HEX 07FFE78387820F823C38F0F3C3CE3C0F
HEX F0380E07381C7039C0E0077EE703870E
HEX 07381CE07381CE7800F8380FFF1C387F
HEX F9C0E0073CE703870FFF3800E073FFCF
HEX F0008238170FFF1C387FF9C0E00718E7
HEX 03870FFF3800E073FFCFF0708238030E
HEX 000E82701001C0E00700E703870E0038
HEX 1CE073800E83780C3C0F0706607839C0
HEX E00700E78287020F07823C31E073C1CE
HEX 3C3FF01F87FE07E03FF1C0E00700E3FF
HEX 9FC7FE1FF8E071FF8E1E0FC00F81FC03
HEX C00FE1C0E00700E0FB9FC1FC0782E004
HEX 707F0E0FFF0086000203308200016094
HEX 00020330820001609400090331F363EC
HEX 31F363C090000903F333866DB3338660
HEX 90000103823306066DB33307E0900001
HEX 0382330506666333069100090331F303
HEX E661F303C08800
About_LCA HEX 4B1A02FF80870005380F070007850002
HEX FFE0870005381E070007850002E0F087
HEX 0002383C82000107850002E070870002
HEX 38788200010785002BE0707E01F707E0
HEX E3C038F03F01F70FC07E0EF8E071FF87
HEX FF1FF8EFC039E03F07FF1FE1FF8FFEE0
HEX F3C3CF0F823C05FC003FC007820F5D38
HEX 63C3CF0FFFE381CE07381CF8003FC007
HEX 0E07380381CE07FF8381CE073FFCF000
HEX 39E0070E071FC381CE07E3C381CE073F
HEX FCF00038F0070E070FE381CE07E1E381
HEX CF0F3800E0003878070E07007381CE07
HEX E0F3C3C7FF3C1CE000383C07820F2B30
HEX 73C3CE07E079FF81F71FF8E000381E3F
HEX E7FF3FE1FF8E07E0387E040E07F0E000
HEX 380F3FE1F71FC07E0E0783000207FC91
HEX 000203F8CB0002018082F0011F820001
HEX 0C8B00060181999819808D0001018281
HEX 0798198F0F1C3E7C8900010182810598
HEX 1999980C826689000101828105F8199F
HEX 8F0C826689000A018199981998018C3E
HEX 6689000501F8F1981F820F031E466691
HEX 00013C8600
About_Layout HEX 501A0270388900031C71C08400047000
HEX 1C0E890003071C708400051C00070380
HEX 88000301C71C840005070001C0E08900
HEX 0271C784007101C00070383FE71E700E
HEX 0FC1C0E01C71C1F83BE01F707E1C0E3F
HEX F9DF9C038FFC7038071C71FF8FFE1FFC
HEX 7FE7FF9E0E7E0381C7879C0E01C71CF0
HEX F3C3CF0F3C3DFFE7039F00E071C0E703
HEX 8071C7381CE07381CE077039C0E7801C
HEX 387FF9C0E01C71CFFF381CE073FFDC0E
HEX 7039E0070E1FFE827825071C73FFCE07
HEX 381CFFF7039C0E7000E707000FFE01C7
HEX 1CE00381CE073801C0E7879C00198182
HEX E02FFB807BEF3C1CE073C3CF077038FF
HEX E70007E03FF000E00FDF87FE381C7FF1
HEX FF9C0E0FB9C000F003F8207001E3C07F
HEX 0E820703DC1FC08800020FF892000201
HEX FCCE0001C093000130840001188E0007
HEX 0C07CCC78CCF808D0082038333023180
HEX 8E0003C0CCDC82CC01608E000330331B
HEX 8233011B8E00070FC7C8C787C3808F00
HEX 0201E08A00
About_Firmware HEX 4D1904003800078400013F8500010E85
HEX 0004038000708300020FFC850001E085
HEX 00033800078300010182E101C0830001
HEX 0E850004038000708300031C0E1C8400
HEX 01E0850036383F077C1DF001C00FFC1F
HEX 83BE0EF807E0EF80038FFC7FF1FFC01F
HEX 00FFC7FE3FF8FFE1FF8FFE0039E1E787
HEX 9E1E00FF01C0F0F3C3CF0F823C82F055
HEX 039C0E7039C0E003FC1C0E07381CE073
HEX 81CE070039C0E7039C0E0003E1C0FFF3
HEX 81CE073FFCE077039C0E7039C0E0000E
HEX 1C0FFF381CE073FFCE077039C0E7039C
HEX 0E01C0E1C0E00381CE073800E077879E
HEX 1E7039C0E0831E020F07823C26E073C1
HEX CE073FF0FFC7039C0E00FFC0FC7FE3FF
HEX 8E071FF8E071FE03F07039C0E003F007
HEX C1FC3B82E004707F0E078C0002038092
HEX 000138C6000301F18091000118920009
HEX 01838DBF9863E6C7808B00081E18E36D
HEX B66670CC8B000501818C36DB8266020F
HEX C08B00821806C36CCC6660C08B000901
HEX 83CC36CCC3E607808500831C89000203
HEX F09600013C84000260038200830C831E
HEX 0901E00001C18000C0F8820001C08300
HEX 01068200016685000603018019E63C83
HEX 33020330820001C0820082C089000C60
HEX 3C7C666CE1F3E3E01B360C8333050333
HEX E3E0C3828705C0C1F0F9C782C305C6CE
HEX 3E1F6083660970633331801B060C3382
HEX 1E010382330930C18CCCC0F19998C682
HEX 660267068233016082660A6E60633331
HEX 801B360C1F82331003F33330C18FCCC0
HEX C19998C667E7E606823383660A366061
HEX F331B019E60C038233010382330A30C1
HEX 8C0CC0C198F8C666830602331F823C07
HEX 7C4660F23330E0820C013F831E120333
HEX E3E1E3C787C0F99919E663C3C60F3323
HEX 820005603C0001E082000203F0850082
HEX 03870001F08600011EC2000403C00380
HEX 8200050603C001C08400010684001163
HEX C18606078C03000783C783C006600180
HEX 8200040C018003840001068400170186
HEX 6786618CCCCF000C04CC04C00603E183
HEX C3C018018782C7078DBF87CF8E1E3E82
HEX 031D00618660C0CCC3000F8CCF8CC003
HEX C661866600300186630CCE36CCC60682
HEX 330A000300C18660C18CC30F84CC11C0
HEX 00666187E3C0600186630CCC36CCC606
HEX 82330B0003018187E0C30FC3000C83CC
HEX 0FC0066661860060C00186630CCC36CC
HEX 82C68233010082030F018060C600C300
HEX 0CCC8CCC8003C3E382C31BC08003C663
HEX 078C36C7C38F1E33030187E7E0618FC0
HEX CFC0078F078F9500016082000106CD00
HEX 017E820003600030820002E00F88000D
HEX 63C18606078C03000783C78780820001
HEX 18820001608400036019808400101800
HEX 01866786618CCCCF000C04CC0CC08200
HEX 0118823C827C0B70F0F86018199F1F0F
HEX 1B3E82030D00618660C0CCC3000F8CCF
HEX 8CC082000118846606319998600F1983
HEX 990C9C18000300C18660C18CC30F84CC
HEX 01C0820003187E608266053181986001
HEX 84990D98180003018187E0C30FC3000C
HEX 82CC02C7C08200021860836605319998
HEX 6019849903981B0082030A018060C600
HEX C3000CCC8C82C082000118823C826604
HEX 78F0F8F0820F149F1F0F180E030187E7
HEX E0618FC0CFC0078F0787808D00821885
HEX 000160820001068900
About_AE HEX 12168A00010787778B00017486440147
HEX 8A000107874402477789000174874482
HEX 47880001078344014785770147880001
HEX 74834401478544014787000107824402
HEX 47448247857787000174824402774482
HEX 478B0001078244824702444784778800
HEX 01748244027447854401478700010782
HEX 44034744478544024777860001748244
HEX 03744477854482478500010782440147
HEX 83770244478477014785000174874401
HEX 47844401478400010788448247847784
HEX 00017488448247870001078244014785
HEX 77024447857783000174824401748444
HEX 01478644014782000107824403474447
HEX 84778644044777007482440374447083
HEX 00010786448247010783770244478400
HEX 01078777014782000174824401708500
HEX 01078644034700078377860001078777
*-----------
CDA_Shutdown RTL ; CDA
CDA_Startup PHP
PHD
PHB
PEA $0000
PLD
PHK
PLB
SEP #$30
NOP
JSR NVRAM_Validate
REP #$30
NOP
LF6FD LDA #$0007
STA $5B
JSR Text_Init
LDX #$0001
LDY #$0017
JSR Text_Offset_For_X_Y
LDA #$004C
LDY #$0026
JSR Text_Repeat_Char_Horiz
LDX #$0000
LDY #$0001
JSR Text_Offset_For_X_Y
LDA #$005A
LDY #$0016
JSR Text_Repeat_Char_Vertical
LDX #$0027
LDY #$0001
JSR Text_Offset_For_X_Y
LDA #$005F
LDY #$0016
JSR Text_Repeat_Char_Vertical
LF73B JSR Text_Clear_Window_from_3
LDX #Menu_Options
SEC
JSR LA06E
JSR STROUT_SelectJK
LF748 JSR STROUT_Open
JSR Display_Version_Info
LF74E JSR Set_No_Items_Selected
LDX #$0004
LDY #$0003
LF757 JSR Text_Offset_For_X_Y
LDX #LF7E9
LDY $5B
JSR Display_Menu_Items
LF762 JSR Menu_Input_Select
BCC LF762
CPY #$0000
BNE LF773
LDA #$0007
STA $5B
BRA LF74E
LF773 CPY #$0007
BEQ LF78C
LDA $5B
PHA
JSR LF79C
PLA
STA $5B
SEP #$30
NOP
JSR Config_to_TW_MODE
REP #$30
NOP
BRA LF73B
LF78C SEP #$30
NOP
JSR NVRAM_Save
JSR Config_to_TW_MODE
REP #$30
NOP
PLB
PLD
PLP
RTL
LF79C CPY #$0001
BNE LF7AB
LF7A1 LDX #LF856
JSR Display_Selected_Menu
JSR LA190
RTS
LF7AB CPY #$0002
BNE LF7BA
LDX #LF85E
JSR Display_Selected_Menu
JSR Configuration_Menu
RTS
LF7BA CPY #$0003
BNE LF7CA
LDX #LF86A
JSR Display_Selected_Menu
CLC
JSR LA318
RTS
LF7CA CPY #$0004
BNE LF7DA
LDX #LF87C
JSR Display_Selected_Menu
SEC
JSR LA318
RTS
LF7DA CPY #$0005
BNE LF7E8
LDX #LF893
JSR Display_Selected_Menu
JSR About_Transwarp_GS
LF7E8 RTS
LF7E9 STR "Speed"
BRK $00
LF7F1 STR "Configure"
BRK $00
LF7FD STR "Quick Self-Test"
BRK $00
LF80F STR "Continuous Self-Test"
BRK $00
LF826 STR "About TransWarp GS"
BRK $00
LF83B STR " "
BRK $00
LF83F STR "Quit"
DB $00
DB $00
DB $00
Menu_Options DW $0000
STR "TransWarp GS"
LF856 DW $0002
STR "Speed"
LF85E DW $0002
STR "Configure"
LF86A DW $0002
STR "Quick Self-Test"
LF87C DW $0002
STR "Continuous Self-Test"
LF893 DW $0002
STR "About TransWarp GS..."
Display_Selected_Menu PHX
JSR Text_Clear_Window_from_3
LDX #Menu_Options
CLC
JSR LA06E
PLX
SEC
JSR LA06E
RTS
Display_Version_Info LDX #$0007
LDY #$0011
JSR Text_Offset_For_X_Y
LDX #String_TW_Version
JSR Text_Out_Pascal_String
LDX #$000E
LDY #$0012
JSR Text_Offset_For_X_Y
LDX #String_TW_Revision
JSR Text_Out_Pascal_String
LDX #$0009
LDY #$0013
JSR Text_Offset_For_X_Y
LDX #String_TW_Copyright
JSR Text_Out_Pascal_String
LDX #$000A
LDY #$0014
JSR Text_Offset_For_X_Y
LDX #String_AE
JSR Text_Out_Pascal_String
RTS
String_TW_Version STR "TransWarp GS version 8/32S"
String_TW_Revision STR "Revision 1.8S"
String_TW_Copyright STR "Copyright (c) 1989-1991"
String_AE STR "Applied Engineering"
MX %10
LF94F REP #$10
NOP
LDX #$1770
LF955 DEX
BEQ LF963
LDAL $E0C026
LDAL $E0C027
ROR
BCS LF955
LF963 LDX #$1D4C
LDA #$07
STAL $E0C026
LF96C DEX
BEQ LF99B
LDAL $E0C026
LDAL $E0C027
ROR
LF978 BCS LF96C
LDA #$0C
JSR LF99F
LF97F LDA #$32
JSR LF99F
LDA #$00
JSR LF99F
LDA #$00
JSR LF99F
LDA #$FF
SEC
LF991 PHA
LF992 SBC #$01
BNE LF992
PLA
SBC #$01
BNE LF991
LF99B SEP #$10
NOP
RTS
LF99F REP #$10
NOP
STAL $E0C026
LDX #$1D4C
LF9A9 DEX
BEQ LF9B3
LDAL $E0C027
LSR
BCS LF9A9
LF9B3 SEP #$10
NOP
RTS
LF9B7 REP #$10
NOP
LDX #$1D4C
SEC
LF9BE DEX
BEQ LF9CE
LDAL $E0C027
AND #$20
BEQ LF9BE
CLC
LDAL $E0C026
LF9CE SEP #$10
NOP
RTS
LF9D2 LDAL $E0C027
PHA
LDA #$00
STAL $E0C027
JSR LF94F
LDA #$09
JSR LF99F
BCS LFA01
LDA #$51
JSR LF99F
BCS LFA01
LDA #$00
JSR LF99F
BCS LFA01
JSR LF9B7
BCS LFA01
CMP #$A5
BEQ LFA01
SEC
BRA LFA02
LFA01 CLC
LFA02 PLA
STAL $E0C027
RTS
LFA08 LDAL $E0C027
PHA
LDA #$00
STAL $E0C027
JSR LF94F
LDA #$08
JSR LF99F
BCS LFA29
LDA #$51
JSR LF99F
BCS LFA29
LDA #$00
JSR LF99F
LFA29 PLA
STAL $E0C027
RTS
LFA2F REP #$20
NOP
PHB
PHA
PHA
LDA $06,S
STA $03,S
LFA39 LDA $08,S
STA $05,S
LDA #>LFA5D-1 ; #$BCFA
STA $08,S
LDA #LFA5D-1
STA $07,S
LDAL LFB24
LDAL LFB24+2
LDAL LFFEA
LDAL LFFEA+2
PLA
RTI
LFA59 JMPL LFA59
LFA5D PHP
REP #$30
NOP
PHA
PHX
PHY
PHB
LDX #$0000
LDY #$9F00
LDA #$00FF
MVN $000000,$E10000
PLB
JSR LFA88
PHB
LDX #$9F00
LDY #$0000
LDA #$00FF
MVN $E10000,$000000
PLB
PLY
PLX
PLA
PLP
RTL
LFA88 PEA ^CDA_Ptr32 ; $00BC
PEA CDA_Ptr32
_InstallCDA
RTS
CDA_Ptr32 ADRL CDA_Install_Hdr
MX %11
LFA9A LDX #$FF
TXS
CLC
XCE
JSR LF94F
LDAL $E0C062
BMI LFB07
JSR FPGA_Init_Readback
BCC LFAB0
JSR FPGA_Check_Readback
LFAB0 LDA #$00
STAL $E0C02D
LDAL $E0C0C8
LFABA LDAL $E0C0D8
LDAL $E0C0E8
LDAL $E0C0F8
LFAC6 JSR NVRAM_Active_Check
BCC LFAF7
LDAL $E0C062
BMI LFB07
REP #$10
NOP
JSR Clear_Text_Pages_E0_E1
SEP #$10
NOP
JSR L9757
LFADD JSR LFA08
JSR NVRAM_Validate
JSR Play_Startup_Intro
REP #$30
NOP
JSR Time_Active_Screen
LFAEC JSR LA8CB
LDA $00
JSR NVRAM_Write_Speed
SEP #$30
NOP
LFAF7 REP #$30
NOP
JSL Flush_Cache_L
LFAFE SEP #$30
NOP
JSR CONFIG_TW_From_NVRAM
JSR Cache_ON
LFB07 SEC
XCE
LDA #$00
PHA
; LDAL LFFFC ; suspicious1
ldal $00FFFC
CMP #$01
; LDAL LFFFC+1 ; suspicious2
ldal $00FFFD
SBC #$00
PHA
; LDAL LFFFC
ldal $00FFFC
DEC
PHA
RTL
LFB20 JMPL LFA9A
LFB24 JMPL LFA2F
MX %00
Version_Info_L LDA #$0000
LDX #$0108
RTL
Reset_HW_Config_L JSR CONFIG_TW_From_NVRAM
JSR Cache_ON
RTL
LFB36 RTL
Get_NVRAM_Speed_L JSR NVRAM_Read_Speed
RTL
Get_Speed_Setting_Index_L LDX #$0003 ; I believe the 3 is a speed setting (GB has GetNumISpeed)
RTL
Get_CPU_Frequency_L LDA #$0000
CPX #$0003
BCS :exit
CPX #$0002
BCC :get_from_table
PHX
JSR NVRAM_Read_Speed
PLX
RTL
:get_from_table PHX
TXA
ASL
TAX
LDAL _frequencyTable,X
PLX
:exit RTL
_frequencyTable DW $0400 ; 1.024
DW $0A28 ; 2.600
DW $1B58 ; 7.000
Get_CPU_Frequency_Diff_L PHA
LDX #$0000
:loop JSL Get_CPU_Frequency_L
CMP $01,S
BCS :found_it
INX
CPX #$0003
BCC :loop
DEX
:found_it JSL Get_CPU_Frequency_L
SEC
SBC $01,S
STA $01,S
PLA
RTL
Set_TW_Speed_L SEP #$20
NOP
CPX #$0000
BEQ :gs_1mhz
JSR GS_FAST
CPX #$0001
BEQ :no_accel
:accel JSR TWGS_ON
BRA :done
:no_accel JSR TWGS_OFF
BRA :done
:gs_1mhz JSR GS_1MHZ
JSR TWGS_OFF
:done REP #$20
NOP
RTL
Get_TW_Speed_L SEP #$20
NOP
LDAL CYAREG
BPL :off
LDAL TWGS_Control
AND #$04
BEQ :zero
LDX #$0002
BRA :done
:zero LDX #$0001
BRA :done
:off LDX #$0000
:done REP #$20
NOP
RTL
Get_Speed_and_Frequency_L JSL Get_TW_Speed_L ; in X
JSL Get_CPU_Frequency_L ; in M
RTL
LFBCF JSR Time_Active_Screen
JSR LA8CB
LDA $00
RTL
Set_Speed_From_Frequency_L JSL Get_CPU_Frequency_Diff_L
PHA
LFBDD JSL Set_TW_Speed_L
PLA
RTL
Flush_Cache_L PHB
JSR Check_Cache_Size
DEC
LDX #$8000
LDY #$8000
LFBEE MVN TWGS_Control,TWGS_Control
PLB
RTL
IRQ_Logic_OFF_L JSR IRQ_Logic_OFF
RTL
IRQ_Logic_ON_L JSR IRQ_Logic_ON
LFBFA RTL
Cache_ON_L JSR Cache_ON
RTL
Cache_OFF_L JSR Cache_OFF
RTL
Get_TW_Mode_L JSR READ_TW_MODE
RTL
Set_TW_Mode_L JSR SET_TW_MODE_KEEP_CACHE
RTL
Get_Cache_Size_L JSR Check_Cache_Size
LDX #$000A
LFC11 LSR
DEX
BNE LFC11
RTL
Filler DS $EA
DS $100
DS $100
TranswarpId ASC 'TWGS' ; happens to be at $FF00
TranswarpId2 ASC 'SMJS' ; not really sure
JMPL Version_Info_L
JMPL Reset_HW_Config_L
JMPL Get_NVRAM_Speed_L ; get "max" speed?
JMPL Get_Speed_Setting_Index_L
JMPL Get_CPU_Frequency_Diff_L
JMPL Get_CPU_Frequency_L
JMPL Get_Speed_and_Frequency_L
JMPL Set_Speed_From_Frequency_L
JMPL Get_TW_Speed_L
JMPL Set_TW_Speed_L
JMPL Flush_Cache_L
JMPL IRQ_Logic_OFF_L
JMPL IRQ_Logic_ON_L
JMPL Get_TW_Mode_L
JMPL Set_TW_Mode_L
JMPL Get_Cache_Size_L
JMPL Cache_ON_L
JMPL Cache_OFF_L
JMPL Run_Diagnostic_Tests
JMPL TWGS_Failed
JMPL LFBCF
Filler2 ds 142 ; hand adjust as I cent get ds working with math/pointers
LFFEA DA LFB24 ; NMI Vector
DA LFA59
LFFEE DA LFA59
DA LFA59
DA LFA59
DA LFA59
DA LFA59
DA LFA59
DA LFA59
LFFFC DA LFB20 ; Reset Vector
LFFFE DA LFA59