Voir le sujet pr�c�dent :: Voir le sujet suivant |
Auteur |
Message |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Ven 14 D�c 2007, 14:10 Sujet du message: Outpost (Sirius Software, 1981) |
|
|
Another wonderful game from Sirius Software.
DISK STRUCTURE
It is a non-standard disk, only T0/S0 can be copied! Each track contains the equivalent of thirteen sectors with markers DD AD DA followed by thirteen 512 4*4 coded nibbles.
Last but not least, the first track is track 1.5
BOOT TRACE
Sirius games are actively protected against boot tracing. That is quite mandatory as, once loaded, there are no more calls to the disk, meaning all the program is loaded into memory!
I will not go into the details of boot tracing it as it will take time and place.
MEMORY ORGANIZATION
- T0/S0 - $0800..$08FF
- T0/S1..4 - $0400..$07FF
- T1.5 - $0800..$13FF
- T2.5 - $1400..$1FFF
- T3.5 - $4000..$4BFF
- T4.5 - $4C00..$57FF
- T5.5 - $5800..$63FF
- T6.5 - $6400..$6FFF
- T7.5 - $7000..$7BFF
- T8.5 - $7C00..$87FF
- T9.5 - $8800..$93FF
DISK COPY
You now have all the information to get the complete game and create a DOS binary file. As always, I believe it is better to rewrite the read routines...
Toinet
Derni�re �dition par toinet le Ven 14 D�c 2007, 21:27; �dit� 2 fois |
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Ven 14 D�c 2007, 14:10 Sujet du message: |
|
|
This is the original boot1 code from Outpost:
Code: |
*
* Outpost
* (c) 1981, Sirius Software
*
* (k) 2007, LoGo
*
org $0800
mx %11
lst off
*
* EQUATES
*
TXTCLR EQU $C050
MIXCLR EQU $C052
TXTPAGE1 EQU $C054
HIRES EQU $C057
L0400 = $0400 ; Boot2 address
*
* CODE
*
L0800 HEX 01
STA TXTCLR
STA MIXCLR
STA TXTPAGE1
STA HIRES
LDX $2B
LDA #>L0400
STA $11
LDY #<L0400
STY $10
L0817 LDA $C08C,X
BPL L0817
L081C CMP #$DD
BNE L0817
L0820 LDA $C08C,X
BPL L0820
CMP #$AD
BNE L081C
L0829 LDA $C08C,X
BPL L0829
CMP #$DA
BNE L081C
L0832 LDA $C08C,X
BPL L0832
SEC
ROL
STA $0E
L083B LDA $C08C,X
BPL L083B
AND $0E
STA ($10),Y
INY
BNE L0832
INC $11
LDA $11
CMP #>L0800
BNE L0832
LDA $C080,X ; Remember what Apple said
LDA #$09 ; Clear RAM from $0900 to $BFFF
STA $01
LDA #$00
STA $00
TAY
LDX #$B7
L085D STA ($00),Y
INY
BNE L085D
INC $01
DEX
BNE L085D
TXA
L0868 INX ; EOR with Boot1 code
BEQ L0871
EOR L0800,X
JMP L0868
L0871 TAX ; Move stack pointer
TXS ; to the EOR value ($20)
LDX #$00 ; Clear ZP
TXA
L0876 EOR $00,X
INX
BNE L0876
LDX $2B
JMP L0400 ; Go to Boot2
DS $80
|
|
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Ven 14 D�c 2007, 14:11 Sujet du message: |
|
|
This is the original boot2 code from Outpost:
Code: |
*
* Outpost
* (c) 1981, Sirius Software
*
* (k) 2007, LoGo
*
org $0400
mx %11
lst off
*
* EQUATES
*
SOFTEV EQU $03F2
PWREDUP EQU $03F4
SPKR EQU $C030
TXTCLR EQU $C050
TXTPAGE2 EQU $C055
HIRES EQU $C057
RDBANK2 EQU $C080
ROMIN2 EQU $C081
INIT EQU $FB2F
WAIT EQU $FCA8
RESETV EQU $FFFC
L0800 = $0800
*
* CODE
*
L0400 LDY #$00 ; Clear ZP
L0402 EOR |$0000,Y
INY
BNE L0402
TAY
BEQ L040E
JMP L0774
L040E LDA #<L0770 ; The Reset vector
STA SOFTEV
LDA #>L0770
STA SOFTEV+1
EOR #$A5
STA PWREDUP
STX $2B
NOP
LDA ROMIN2 ; Bye bye wildcards
LDA ROMIN2
LDY #$00
STY $00
LDA #$D0
STA $01
L042E LDA ($00),Y
STA ($00),Y
INY
BNE L042E
INC $01
BNE L042E
LDA #<L0770 ; The Reset vector
STA RESETV
LDA #>L0770
STA RESETV+1
LDA RDBANK2
LDA #<L0774 ; the COUT vector
STA $36
STA $38
LDA #>L0774
STA $37
STA $39
LDA #$00 ; Another EOR
TSX
STX $0B
STA $0C
STA $0D
STA $0E
LDA $0B
LDX #$00
L0461 EOR L0400,X
EOR L0500,X
EOR L0600,X
EOR L0700,X
INX
BNE L0461
PHA ; Values pushed to
PHA ; jump to the game
*
*
*
LDY #$03 ; Move to track 1.5
JSR L0500
L0477 LDY $0E
LDA L05F0,Y
BNE L0481
JMP L0520 ; All data loaded, next step
L0481 JSR L0490 ; Load data
JSR L04D8 ; Move to next track
STA TXTCLR
INC $0E
JMP L0477
HEX BE
*
* LOAD DATA
*
L0490 STA $05
CLC
LDA #$0C
STA $06
LDY #$00
STY $04
L049B LDA $C08C,X
BPL L049B
L04A0 CMP #$DD
BNE L049B
L04A4 LDA $C08C,X
BPL L04A4
CMP #$AD
BNE L04A0
L04AD LDA $C08C,X
BPL L04AD
CMP #$DA
BNE L04A0
L04B6 LDA $C08C,X
BPL L04B6
STA HIRES
SEC
ROL
STA TXTCLR
STA $0F
L04C5 LDA $C08C,X
BPL L04C5
AND $0F
STA ($04),Y
INY
BNE L04B6
INC $05
DEC $06
BNE L04B6
RTS
*
* MOVE ARM
*
L04D8 LDY #$02
STX $2B
L04DC INC $0C
LDA $0C
AND #$03
ASL
ORA $2B
TAX
LDA $C081,X
JSR L04F8
LDA $C080,X
JSR L04F8
DEY
BNE L04DC
LDX $2B
RTS
*
* WAIT
*
L04F8 STA TXTCLR
LDA #$40
JMP WAIT
*
* MOVE ARM
*
L0500 JSR L04DC ; Move Y phases
STX $2B
LDA #$00
LDX #$0F
LDY #$18
JSR L0560 ; Display logo
LDX $2B
RTS
HEX 000000000000000000000000000000
*
* NEXT STEP
*
L0520 LDA $C088,X
JSR L07D0 ; EOR program
; Remember 2 PHA's on entry
; both values are $00
PLA ; c <= 00
TAX ; c
PLA ; d <= 00
SEC ; d
ADC #$7E ; d
PHA ; d => 82
TXA ; c
CLC ; c
SBC #$00 ; c
PHA ; c => 00
SEC ; c
ADC #$36 ; c
STA $00 ; c => $CA
SEC ; c
SBC #$36 ; c
STA $01 ; c => $94
TAY ; c
PLA ; c <= 00
PHA ; c => 00
CLC ; c
ADC #$64 ; c
STA ($00),Y ; c => $94CA,94 = $64
INY ; c
SEC ; c
ADC #$00 ; c
STA ($00),Y ; c => $94CA,95 = $64
LDA #$00 ; c
STA $00 ; c
PLA ; c <= 00
PHA ; c => 00
STA ($00),Y ; c => $9400,95 = $00
INY ; c
SEC ; c
SBC #$08 ; c
STA ($00),Y ; c => $9400,96 = $F8
RTS
HEX 00000000000000
*
* SHOW LOGO
*
L0560 STX $10
STY $11
TAX
LDA L05B4,X
CLC
ADC $10
STA $12
LDA L05B6,X
CLC
ADC $11
STA $13
LDA L05B0,X
STA L058F+1
LDA L05B2,X
STA L058F+2
LDX $11
L0583 LDA L0738,X
STA $14
LDA L0700,X
STA $15
LDY $10
L058F LDA L0600+$6C
STA ($14),Y
INC L058F+1
BNE L059C
INC L058F+2
L059C INY
CPY $12
BNE L058F
INX
CPX $13
BNE L0583
RTS
HEX 000000000000000000
*
* LOGO TABLES
*
L05B0 HEX 0000
L05B2 HEX 0600
L05B4 HEX 0900
L05B6 HEX 0C00
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 0000000000000000
*
* GAME POINTER
*
L05F0 HEX 0814404C5864707C8800000000000076
*
* LoGo (arf!)
*
L0600 HEX A8D5AAD5AAD5AAD58288000000000000
HEX 0082881E333F1F1E1E3F82883F333F3F
HEX 3F3F3F828833330C3333030C82883333
HEX 0C3F331E0C828833330C1F33300C8288
HEX 3F3F0C033F3F0C82881E1E0C031E1E0C
HEX 82880000000000000082A8D5AAD5AAD5
HEX AAD58200000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
*
* HGR address lines
*
L0700 HEX 2024282C3034383C2024282C3034383C
HEX 2125292D3135393D2125292D3135393D
HEX 22262A2E32363A3E22262A2E32363A3E
HEX 23272B2F33373B3F
L0738 HEX 2828282828282828A8A8A8A8A8A8A8A8
HEX 2828282828282828A8A8A8A8A8A8A8A8
HEX 2828282828282828A8A8A8A8A8A8A8A8
HEX 2828282828282828
*
* RESTART ROUTINES
*
L0770 LDA #$00
BEQ L0788
L0774 LDA #$01
BNE L0788
LDA #$02
BNE L0788
LDA #$03
BNE L0788
L0780 LDA #$04
BNE L0788
LDA #$05
BNE L0788
L0788 ORA #$B0 ; Bing Bong Restart
BIT $0800
JSR INIT
LDA TXTPAGE2
LDA #$08
STA $01
LDA #$01
STA $00
LDY #$00
LDX #$B8
LDA #$A0
L07A1 STA ($00),Y
INY
BNE L07A1
INC $01
DEX
BNE L07A1
LDA #$08
STA $00
L07AF LDY #$80
L07B1 LDA SPKR
LDX #$60
L07B6 DEX
BNE L07B6
DEY
BNE L07B1
DEC $00
BNE L07AF
LDX $2B ; I like that routine!
DEX
TXA
LSR
LSR
LSR
LSR
ORA #$C0
PHA
LDA #$FF
PHA
RTS
HEX 00
*
* FINAL EOR...
*
L07D0 LDY #<L0800 ; The last EOR
STY $04 ; of the complete
LDA #>L0800 ; game...
STA $05
LDA #$00
L07DA EOR ($04),Y
INY
BNE L07DA
INC $05
LDX $05
CPX #$20
BNE L07DA
ASL $05 ; $2000 => $4000
L07E9 EOR ($04),Y
INY
BNE L07E9
INC $05
LDX $05
CPX #$94 ; until end of game
BNE L07E9
TAY
BNE L0780
RTS
HEX 000000000000
|
|
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Ven 14 D�c 2007, 14:12 Sujet du message: |
|
|
And now, my modified boot1 code:
Code: |
*
* Outpost
* (c) 1981, Sirius Software
*
* (k) 2007, LoGo
*
org $0800
mx %11
lst off
*
* Assume SLOT 6 !
* Really optimized !
* Maybe too much...
*
TXTCLR EQU $C050
MIXCLR EQU $C052
TXTPAGE1 EQU $C054
HIRES EQU $C057
dpBUF = $00
dpNIBBLE = $0E
dpBUFFER = $10
dpSLOT = $2B
dpSECTOR = $3D
dpBYTE = $40
dpTRACK = $41
L0300 = $0300
L0356 = $0356
BOOT2 = $A000
BOOT2_END = $A600
*
*
*
HEX 01
L0800 STA TXTCLR ; HGR mode
STA MIXCLR
STA TXTPAGE1
STA HIRES
LDA #<BOOT2
STA dpBUFFER
LDA #>BOOT2
STA dpBUFFER+1
lda #0
sta dpTRACK
* Read header
mainLOOP ldx dpTRACK
lda INTER,x
sta dpSECTOR
readHEADER CLC
readDATA PHP
read1 LDA $C0EC
BPL *-3
read2 EOR #$D5
BNE read1
LDA $C0EC
BPL *-3
CMP #$AA
BNE read2
LDA $C0EC
BPL *-3
CMP #$96
BEQ doHEADER
PLP
BCC readHEADER
EOR #$AD
BEQ doDATA
BNE readHEADER
* Read header
doHEADER LDY #$03
]lp STA dpBYTE
LDA $C0EC
BPL *-3
ROL
STA dpNIBBLE
LDA $C0EC
BPL *-3
AND dpNIBBLE
DEY
BNE ]lp
PLP
CMP dpSECTOR ; Right sector ?
BNE readHEADER
BCS readDATA
* Read data
doDATA LDY #$56
]lp LDX $C0EC
BPL *-3
EOR L0356-$80,X
DEY
STA L0300,Y
BNE ]lp
]lp LDX $C0EC ; Y equals 0 ;-)
BPL *-3
EOR L0356-$80,X
STA (dpBUFFER),Y
INY
BNE ]lp
LDX $C0EC ; checksum
BPL *-3
EOR L0356-$80,X
BNE readHEADER
* Deniblize
doNIBBLE1 LDX #$56 ; Y equals 0 ;-)
doNIBBLE2 DEX
BMI doNIBBLE1
LDA (dpBUFFER),Y
LSR L0300,X
ROL
LSR L0300,X
ROL
STA (dpBUFFER),Y
INY
BNE doNIBBLE2
* Next sector
inc dpTRACK ; next sector
inc dpBUFFER+1 ; next buffer
lda dpBUFFER+1
cmp #>BOOT2_END
beq doNEXT
jmp mainLOOP
*
doNEXT LDA $C0E0 ; Remember what Apple said
LDX #$20
TXS
JMP BOOT2 ; Boot 2...
*
INTER HEX 0D0B09070503
ds 22
SIGNATURE HEX 20204C4F474F2020
HEX 2020323030372020
ds \
|
|
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Ven 14 D�c 2007, 14:14 Sujet du message: |
|
|
And my new boot2 code that copies the original $0400..$07FF at the right place and jumps to the right location at $0520:
Code: |
*
* Outpost
* (c) 1981, Sirius Software
*
* (k) 2007, LoGo
*
org $A000
mx %11
lst off
*
*
*
dpBUFFER = $04
dpSECTORS = $06
dpPHASE = $0C
dpNIBBLE = $0E
dpINDEX = $0F
dpSECTOR = $3D
dpBYTE = $40
dpTRACK = $41
nbSECTORS = $0C
L0300 = $0300
L0356 = $0356
OUTPOST = $0520
WAIT EQU $FCA8
*
*
*
LDA #$00
STA dpPHASE
STA dpINDEX
jsr showLoGo
L0416 JSR L0480 ; move arm
LDY dpINDEX
LDA L0428,Y
BEQ L047C
JSR L0434 ; load data
INC dpINDEX
JMP L0416 ; loop
L047C JMP BOOT3
L0428 HEX 0814404C5864707C8800
*
* LOAD DATA
*
L0434 STA dpBUFFER+1
LDA #$0C
STA dpTRACK
LDY #$00
STY dpBUFFER
]lp ldx dpTRACK
lda INTER,x
sta dpSECTOR
JSR readHEADER
inc dpBUFFER+1
dec dpTRACK
bne ]lp
rts
*
* We are at $0700 ;-)
*
readHEADER CLC
readDATA PHP
read1 LDA $C0EC
BPL *-3
read2 EOR #$D5
BNE read1
LDA $C0EC
BPL *-3
CMP #$AA
BNE read2
LDA $C0EC
BPL *-3
CMP #$96
BEQ doHEADER
PLP
BCC readHEADER
EOR #$AD
BEQ doDATA
BNE readHEADER
* Read header
doHEADER LDY #$03
]lp STA dpBYTE
LDA $C0EC
BPL *-3
ROL
STA dpNIBBLE
LDA $C0EC
BPL *-3
AND dpNIBBLE
DEY
BNE ]lp
PLP
CMP dpSECTOR ; Right sector ?
BNE readHEADER
BCS readDATA
* Read data
doDATA LDY #$56
]lp LDX $C0EC
BPL *-3
EOR L0356-$80,X
DEY
STA L0300,Y
BNE ]lp
]lp LDX $C0EC ; Y equals 0 ;-)
BPL *-3
EOR L0356-$80,X
STA (dpBUFFER),Y
INY
BNE ]lp
LDX $C0EC ; checksum
BPL *-3
EOR L0356-$80,X
doDATA1 BNE readHEADER
* Denibblize
doNIBBLE1 LDX #$56 ; Y equals 0 ;-)
doNIBBLE2 DEX
BMI doNIBBLE1
LDA (dpBUFFER),Y
* STA $0500,X
LSR L0300,X
* STA $0600,X
ROL
LSR L0300,X
* STA $0700,X
ROL
STA (dpBUFFER),Y
INY
BNE doNIBBLE2
rts
* Interleaving
INTER HEX 06080A0C0E
HEX 01030507090B0D00
*
* MOVE ARM
*
L0480 LDY #$02 ; by 2 phases
]lp INC dpPHASE
LDA dpPHASE
AND #$03
ASL
TAX
LDA $C0E1,X
JSR L04A0
LDA $C0E0,X
JSR L04A0
DEY
BNE ]lp
RTS
L04A0 LDA #$40
JMP WAIT
ds \
*
* NEXT STEP
*
BOOT3 ldx #0
]lp lda PAGE4,x
sta $0400,x
lda PAGE5,x
sta $0500,x
lda PAGE6,x
sta $0600,x
lda PAGE7,x
sta $0700,x
inx
bne ]lp
LDA #$00 ; Another EOR
TSX
STX $0B
STA $0C
STA $0D
STA $0E
LDA $0B
LDX #$00
]lp EOR $0400,X
EOR $0500,X
EOR $0600,X
EOR $0700,X
INX
BNE ]lp
PHA ; Values pushed to
PHA ; jump to the game
ldx $2B
JMP OUTPOST
*
* SHOW LOGO
*
showLoGo LDA #$0F
STA $10
CLC
ADC #$09
STA $12
LDA #$18
STA $11
CLC
ADC #$0C
STA $13
LDX $11
L0583 LDA L0738,X
STA $14
LDA L0700,X
STA $15
LDY $10
L058F LDA PAGE6
STA ($14),Y
INC L058F+1
BNE L059C
INC L058F+2
L059C INY
CPY $12
BNE L058F
INX
CPX $13
BNE L0583
RTS
L0700 HEX 2024282C3034383C2024282C3034383C
HEX 2125292D3135393D2125292D3135393D
HEX 22262A2E32363A3E22262A2E32363A3E
HEX 23272B2F33373B3F
L0738 HEX 2828282828282828A8A8A8A8A8A8A8A8
HEX 2828282828282828A8A8A8A8A8A8A8A8
HEX 2828282828282828A8A8A8A8A8A8A8A8
HEX 2828282828282828
ds \
*
*
*
PAGE4 HEX A000590000C8D0FAA8F0034C7407A970
HEX 8DF203A9078DF30349A58DF403862BEA
HEX AD81C0AD81C0A0008400A9D08501B100
HEX 9100C8D0F9E601D0F5A9708DFCFFA907
HEX 8DFDFFAD80C0A97485368538A9078537
HEX 8539A900BA860B850C850D850EA50BA2
HEX 005D00045D00055D00065D0007E8D0F1
HEX 4848A003200005A40EB9F005D0034C20
HEX 0520900420D8048D50C0E60E4C7704BE
HEX 850518A90C8506A0008404BD8CC010FB
HEX C9DDD0F7BD8CC010FBC9ADD0F3BD8CC0
HEX 10FBC9DAD0EABD8CC010FB8D57C0382A
HEX 8D50C0850FBD8CC010FB250F9104C8D0
HEX E5E605C606D0DF60A002862BE60CA50C
HEX 29030A052BAABD81C020F804BD80C020
HEX F80488D0E7A62B608D50C0A9404CA8FC
PAGE5 HEX 20DC04862BA900A20FA018206005A62B
HEX 60000000000000000000000000000000
HEX BD88C020D00768AA6838697E488A18E9
HEX 0048386936850038E9368501A8684818
HEX 69649100C83869009100A90085006848
HEX 9100C838E90891006000000000000000
HEX 86108411AABDB4051865108512BDB605
HEX 1865118513BDB0058D9005BDB2058D91
HEX 05A611BD38078514BD00078515A410AD
HEX 6C069114EE9005D003EE9105C8C412D0
HEX EEE8E413D0DD60000000000000000000
HEX 0000060009000C000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 0814404C5864707C8800000000000076
PAGE6 HEX A8D5AAD5AAD5AAD58288000000000000
HEX 0082881E333F1F1E1E3F82883F333F3F
HEX 3F3F3F828833330C3333030C82883333
HEX 0C3F331E0C828833330C1F33300C8288
HEX 3F3F0C033F3F0C82881E1E0C031E1E0C
HEX 82880000000000000082A8D5AAD5AAD5
HEX AAD58200000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
HEX 00000000000000000000000000000000
PAGE7 HEX 2024282C3034383C2024282C3034383C
HEX 2125292D3135393D2125292D3135393D
HEX 22262A2E32363A3E22262A2E32363A3E
HEX 23272B2F33373B3F2828282828282828
HEX A8A8A8A8A8A8A8A82828282828282828
HEX A8A8A8A8A8A8A8A82828282828282828
HEX A8A8A8A8A8A8A8A82828282828282828
HEX A900F014A901D010A902D00CA903D008
HEX A904D004A905D00009B02C0008202FFB
HEX AD55C0A9088501A9018500A000A2B8A9
HEX A09100C8D0FBE601CAD0F6A9088500A0
HEX 80AD30C0A260CAD0FD88D0F5C600D0EF
HEX A62BCA8A4A4A4A4A09C048A9FF486000
HEX A0008404A9088505A9005104C8D0FBE6
HEX 05A605E020D0F306055104C8D0FBE605
HEX A605E094D0F3A8D08760000000000000
|
|
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
toinet
Inscrit le: 15 Juin 2007 Messages: 326 Localisation: Paris, France
|
Post� le: Ven 14 D�c 2007, 14:24 Sujet du message: |
|
|
And a short routine to load the complete game into memory... Disassembling, reassembling takes less time than boot tracing
Code: |
*
* Outpost
* (c) 1981, Sirius Software
*
* (k) 2007, LoGo
*
org $3000
mx %11
lst off
*
* CODE
*
LDX #$60
STX $2B
LDA #$00 ; Another EOR
STA $0C
STA $0E
*
*
*
LDY #$03 ; Move to track 1.5
JSR L04DC
L0477 LDY $0E
LDA L05F0,Y
BNE L0481
RTS
L0481 JSR L0490 ; Load data
JSR L04D8 ; Move to next track
INC $0E
JMP L0477
*
* LOAD DATA
*
L0490 STA $05
CLC
LDA #$0C
STA $06
LDY #$00
STY $04
L049B LDA $C08C,X
BPL L049B
L04A0 CMP #$DD
BNE L049B
L04A4 LDA $C08C,X
BPL L04A4
CMP #$AD
BNE L04A0
L04AD LDA $C08C,X
BPL L04AD
CMP #$DA
BNE L04A0
L04B6 LDA $C08C,X
BPL L04B6
SEC
ROL
STA $0F
L04C5 LDA $C08C,X
BPL L04C5
AND $0F
STA ($04),Y
INY
BNE L04B6
INC $05
DEC $06
BNE L04B6
RTS
*
* MOVE ARM
*
L04D8 LDY #$02
STX $2B
L04DC INC $0C
LDA $0C
AND #$03
ASL
ORA $2B
TAX
LDA $C081,X
JSR L04F8
LDA $C080,X
JSR L04F8
DEY
BNE L04DC
LDX $2B
RTS
*
* WAIT
*
L04F8 LDA #$40
JMP $FCA8
*
* GAME POINTER
*
L05F0 HEX 0814404C5864707C8800
ds \
|
|
|
Revenir en haut de page |
|
![](templates/subSilver/images/spacer.gif) |
|