Index du Forum
IDENTIFICATION SERVEUR : 10.14.20.57 - CLIENT : 3.236.222.124

 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Mac Arthur's war (SSG, 1988)

 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3077
Localisation: Le Chesnay, France

MessagePosté le: Ven 31 Aoû 2007, 9:21    Sujet du message: Mac Arthur's war (SSG, 1988) Répondre en citant

A typical wargame from SSG. I lack the documentation, giving more information would be difficult...

All I can say is that it was an easy crack but the hardest to update to make it bootable and playable due to the use of the complete memory of the Apple II.


PROTECTION TYPE
It is nothing but a ten sectors per track disk. Each sector is 4*4 coded. The advantage of using 4*4 coded nibbles is that it does not require any ram space to decode nibbles into bytes.


BOOT TRACE
- 9600<C600.C6FFM
- 96FB: AD E8 C0 60
- 9600G
The code we get at $0800 loads data from $1000 to $10FF
- 96FB: A9 59 8D 8D 08 A9 FF 8D 8E 08 4C 01 08
- 9600G
The code at $1000 loads data from $BD00 to $BFFF. It sets a JMP $BD00 at $03D0 and then jumps to $BD00. That is the entry point of the RWTS. Let's detail it...


THE RWTS
$BD00: the entry point. It uses ZP values from $00 to $05.
$BDDC: boing! The error management routine.
$BDEB: read marker data
$BE4C: move the arm.
$BE8A: read sector
$BF00: write sector

The zero page values:
$00: high-byte start address (eg. $BA for $BA00)
$01: high-byte end address (eg. $BC for $BCFF)
$02: not used, always $00
$03: command ($1: read, $2: write)
$04: track
$05: sector

A simple example:
- loading data from $2000 to $3FFF from track 2, sector 0:
- put these values at $00: 20 3F 00 01 02 00
- perform a JSR or a JMP to $BD00


DISK COPY
As you can see, reading the disk is an easy task. Please note that track 0 contains NINE sectors only, not ten. Perform the read manually:
- $00: 10 18 00 01 00 00
- BD00G
- save data from $1000 to $18FF on your second disk drive

Transform the following pseudo-code in assembly and run it to get the remaining tracks.

Code:

FOR track=$1 to track=$22
.FOR sector=$0 to sector=$9
..set the right parameters on ZP: $10 19 00 01 TT SS
..load data from $1000 to $19FF
..save it on your second disk drive
.end FOR
end FOR


Perform the same operations on side B !

You now have a copiable diskette that will not boot: all disk routines must be rewritten.


DISK STRUCTURE
First of all, we need to know what is where on the disk:
- T0/S0: first sector is a standard 6*2 sector (required to boot)
All other sectors are non standard sectors and are 4*4 coded.
- T0/S0: corresponds to T0/S1 on the non-protected disk, it contains the side info string: MCAWx4 (x=1 or 2 depending on the side)
- T0/S1 to T22/S9 are 4*4 nibbles.


MEMORY ORGANIZATION
We then need to know what is where:
$0000..$00FF: Zero page
$0100..$01FF: Stack
$0200..$02FF: non-standard track 0, sector 0 is loaded there. Needed to know which side we are on.
$0300..$03FF: program variables
$0400..$3FFF: program
$4000..$5FFF: HGR2
$6000..$BFFF: program
$D000..$FFFF: program
As you can see, we have no room on the Apple II memory to load our nibbles and decode them to RAM.
We will use the $0280..$02FF area and take that into account to update the side check routines.


REWRITING THE DISK ROUTINES
Rewriting the read and arm move routines is easy, changing the write routine is quite difficult.
We have no room in RAM to transform bytes into nibbles. So that, I have decided not to include the write routine. It will come later on.
I will add another entry in that thread with the source code of the new RWTS.


UPDATING THE SIDE CHECK ROUTINES
Now that the routines have been updated, we need to update the side check routines:
- the program loads T0/S0 of both sides at $0200 and checks the value of $0204 ($B1 or $B2)
- the program checks the value of the byte following the side string. If it does not find "4", it hangs.

As our new T0/S0 is our boot code, we need to tell the program to load another sector of the disk where the side info is.
The one I have used is T0/S9. Another issue is that the sector is loaded at $0200 and our denibblizing data is at $0280 leading to a conflict.
I have but found values for which the side is correctly checked.

Setting the side info
- on side 1, load T0/S9, fill it entirely with $11 values and save it back to disk
- on side 2, load T0/S9, fill it entirely with $22 values and save it back to disk

Updating the side check routine (side 1 only)
- T2/S3/12: 02 02 00 01 00 00 => 02 02 00 01 00 09
- T2/S3/00: D0 0A CA D0 F5 AD 04 02 29 0F 85 0A 60 => D0 00 CA D0 F5 AD 80 02 29 0F 85 0A 60

Removing the check routine
- TA/S0/AF: 02 02 00 01 00 00 => 02 02 00 01 00 09
- TA/S0/C2: AD 05 02 C9 04 D0 02 18 24 38 60 => AD 05 02 C9 04 D0 00 18 24 38 60


Pffffff... End of part 1, enjoy!

Toinet


Dernière édition par toinet le Ven 31 Aoû 2007, 11:30; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3077
Localisation: Le Chesnay, France

MessagePosté le: Ven 31 Aoû 2007, 9:22    Sujet du message: Répondre en citant

And now, the code of the original RWTS:

Code:

*
* SSG: MacArthur's war
*
* Original source code, LoGo 2007
*

         ORG   $00BD00
         MX    %11
         LST   OFF

*
* EQUATES
*

RWTS_BUF_LOW = $00
RWTS_BUF_HIGH = $01
RWTS_COMMAND = $03
RWTS_TRACK =   $04
RWTS_SECTOR =  $05
RWTS_TRIES1 =  $06
RWTS_TRIES2 =  $07

SECTOR_READ =  $2D
TRACK_READ =   $2E

MAX_SECTOR =   $0A
MAX_TRACK =    $23

COMMAND_READ = $01
COMMAND_WRITE = $02

CURRENT_SLOT = $03D3
CURRENT_DRIVE = $03D4

*

SPKR     EQU   $C030

*
* RWTS
*

LBD00    CLD
         JMP   LBD05

RWTS_PHASE DB  $00

LBD05    LDA   RWTS_BUF_LOW
         STA   LBF39+2
         STA   LBF57+2
         STA   LBECB+2
         SEC
         SBC   RWTS_BUF_HIGH
         BEQ   LBD1A
         BCC   LBD1A
         JMP   EXIT_ERR   ; LOW must be < HIGH

LBD1A    LDX   CURRENT_SLOT ; SLOT * 16
         LDA   CURRENT_DRIVE ; DRIVE
         LSR
         BCS   LBD28
         LDA   $C08B,X    ; drive 2
         BCC   LBD2B
LBD28    LDA   $C08A,X    ; drive 1

LBD2B    LDA   $C089,X    ; turn drive on

         LDA   RWTS_COMMAND
         CMP   #COMMAND_READ
         BEQ   LBD3C

         LDY   #$03
LBD36    JSR   WAIT
         DEY
         BPL   LBD36

*
* ARE WE ON THE RIGHT TRACK AND SECTOR ?
*

LBD3C    LDA   #$05
         STA   RWTS_TRIES2

LBD40    LDA   #$30
         STA   RWTS_TRIES1

LBD44    JSR   READ_ADDRESS
         BCC   LBD61
         DEC   RWTS_TRIES1
         BPL   LBD44
         LDA   #$16
         STA   RWTS_PHASE
         LDA   #$00
         DEC   RWTS_TRIES2
         BNE   LBD5B
         JMP   EXIT_ERR

LBD5B    JSR   MOVE_ARM
         JMP   LBD40

* ADDRESS FIELD FOUND

LBD61    LDA   TRACK_READ ; are we on the right track ?
         CMP   RWTS_TRACK
         BEQ   LBD82

         LDA   $C080,X    ; nope! move
         LDA   $C082,X
         LDA   $C084,X
         LDA   $C086,X
         LDA   TRACK_READ
         ASL
         STA   RWTS_PHASE
         LDA   RWTS_TRACK
         ASL
         JSR   MOVE_ARM
         JMP   LBD44

* WE ARE ON THE RIGHT TRACK

LBD82    LDA   RWTS_SECTOR
         CMP   SECTOR_READ
         BEQ   LBD93
         DEC   RWTS_TRIES1
         BPL   LBD44
         DEC   RWTS_TRIES2
         BNE   LBD40
         JMP   EXIT_ERR

* WE ARE WELL-PLACED

LBD93    LDA   RWTS_COMMAND
         CMP   #COMMAND_WRITE
         BEQ   LBDA5

         JSR   READ_SECTOR
         BCC   LBDA8
         DEC   RWTS_TRIES1
         BMI   EXIT_ERR
         JMP   LBD44

LBDA5    JSR   WRITE_SECTOR

* LOOP UNTIL WE REACH THE END!

LBDA8    LDA   RWTS_BUF_LOW ; next page
         CMP   RWTS_BUF_HIGH
         BEQ   EXIT
         CLC
         ADC   #$01
         STA   RWTS_BUF_LOW
         STA   LBF39+2
         STA   LBF57+2
         STA   LBECB+2

         INC   RWTS_SECTOR ; next sector
         LDA   RWTS_SECTOR
         CMP   #MAX_SECTOR
         BEQ   LBDC7
         JMP   LBD3C

LBDC7    LDA   #$00       ; next track
         STA   RWTS_SECTOR
         LDA   RWTS_TRACK
         ASL
         STA   RWTS_PHASE
         INC   RWTS_TRACK
         LDA   RWTS_TRACK
         ASL
         JSR   MOVE_ARM
         JMP   LBD3C

*
*
*

EXIT_ERR JSR   BOING

EXIT     STA   $C08E,X
         CMP   $C08C,X
         LDA   $C088,X
         RTS

*
*
*

LBDE9    SEC
         RTS

READ_ADDRESS LDY #$F8
         STY   $26
LBDEF    INY
         BNE   LBDF6
         INC   $26
         BEQ   LBDE9
LBDF6    LDA   $C08C,X
         BPL   LBDF6
LBDFB    CMP   #$D5
         BNE   LBDEF
         NOP
LBE00    LDA   $C08C,X
         BPL   LBE00
         CMP   #$AA
         BNE   LBDFB
         LDY   #$03
LBE0B    LDA   $C08C,X
         BPL   LBE0B
         CMP   #$B5
         BNE   LBDFB
         LDA   #$00
LBE16    STA   $27
LBE18    LDA   $C08C,X
         BPL   LBE18
         ROL
         STA   $26
LBE20    LDA   $C08C,X
         BPL   LBE20
         AND   $26
         STA   |$002C,Y
         EOR   $27
         DEY
         BPL   LBE16
         TAY
         BNE   LBDE9
LBE32    LDA   $C08C,X
         BPL   LBE32
         CMP   #$DE
         BNE   LBDE9
         NOP
LBE3C    LDA   $C08C,X
         BPL   LBE3C
         CMP   #$AA
         BNE   LBDE9
         CLC
         RTS

*
*
*

MOVE_WAIT LDA  #$28
         JMP   WAIT

MOVE_ARM STA   $2A
LBE4E    LDA   RWTS_PHASE
         STA   $27
         SEC
         SBC   $2A
         BEQ   LBE79
         BCS   LBE5F
         INC   RWTS_PHASE
         BCC   LBE62
LBE5F    DEC   RWTS_PHASE
LBE62    JSR   LBE7C
         JSR   MOVE_WAIT
         LDA   $27
         AND   #$03
         ASL
         ORA   CURRENT_SLOT
         TAY
         LDA   $C080,Y
         JSR   MOVE_WAIT
         BEQ   LBE4E
LBE79    JSR   MOVE_WAIT
LBE7C    LDA   RWTS_PHASE
         AND   #$03
         ASL
         ORA   CURRENT_SLOT
         TAY
         LDA   $C081,Y
         RTS

*
*
*

READ_SECTOR LDY #$20
LBE8C    DEY
         BEQ   LBEFC
LBE8F    LDA   $C08C,X
         BPL   LBE8F
         NOP
LBE95    EOR   #$D5
         BNE   LBE8C
         NOP
LBE9A    LDA   $C08C,X
         BPL   LBE9A
         CMP   #$AA
         BNE   LBE95
         LDY   #$9A
LBEA5    LDA   $C08C,X
         BPL   LBEA5
         CMP   #$AD
         BNE   LBE95
         LDY   #$00
         LDA   #$00
         STA   $47
LBEB4    LDA   $C08C,X
         BPL   LBEB4
         AND   #$55
         ASL
         STA   $46
LBEBE    LDA   $C08C,X
         BPL   LBEBE
         AND   #$55
         ORA   $46
         EOR   $47
         STA   $47
LBECB    STA   $6F00,Y
         INY
         BNE   LBEB4
LBED1    LDA   $C08C,X
         BPL   LBED1
         AND   #$55
         ASL
         STA   $46
LBEDB    LDA   $C08C,X
         BPL   LBEDB
         AND   #$55
         ORA   $46
         EOR   $47
         BNE   LBEFC
LBEE8    LDA   $C08C,X
         BPL   LBEE8
         CMP   #$DE
         BNE   LBEFC
LBEF1    LDA   $C08C,X
         BPL   LBEF1
         CMP   #$AA
         BNE   LBEFC
         CLC
         RTS
LBEFC    SEC
         RTS
LBEFE    CLC
         RTS

*
*
*

WRITE_SECTOR SEC
         LDA   $C08D,X
         LDA   $C08E,X
         BMI   LBEFE
         STX   $27
         BIT   $0300
         PHA
         PLA
         LDA   #$FF
         STA   $C08F,X
         ORA   $C08C,X
         PHA
         PLA
         NOP
         LDY   #$0A
LBF1D    ORA   $26
         JSR   LBF93
         DEY
         BNE   LBF1D
         LDA   #$D5
         JSR   WRITE_NIBBLE
         LDA   #$AA
         JSR   WRITE_NIBBLE
         LDA   #$AD
         JSR   WRITE_NIBBLE
         CMP   ($00,X)
         TYA
         LDY   #$00
LBF39    EOR   $6F00,Y
         PHA
         LSR
         ORA   #$AA
         STA   $C08D,X
         CMP   $C08C,X
         PHA
         CMP   ($00,X)
         PLA
         PLA
         NOP
         NOP
         ORA   #$AA
         STA   $C08D,X
         CMP   $C08C,X
         BIT   $26
LBF57    LDA   $6F00,Y
         INY
         BNE   LBF39
         PHA
         LSR
         ORA   #$AA
         BIT   $26
         NOP
         STA   $C08D,X
         CMP   $C08C,X
         PHA
         CMP   ($00,X)
         PLA
         PLA
         NOP
         NOP
         ORA   #$AA
         STA   $C08D,X
         CMP   $C08C,X
         CMP   ($00,X)
         LDA   #$DE
         JSR   WRITE_NIBBLE
         LDA   #$AA
         JSR   WRITE_NIBBLE
         LDA   #$EB
         JSR   WRITE_NIBBLE
         LDA   $C08E,X
         LDA   $C08C,X
         SEC
         RTS

WRITE_NIBBLE CLC
LBF93    PHA
         PLA
         STA   $C08D,X
         ORA   $C08C,X
         RTS

*
*
*

WAIT     SEC
LBF9D    PHA
LBF9E    SBC   #$01
         BNE   LBF9E
         PLA
         SBC   #$01
         BNE   LBF9D
         RTS

*
*
*

BOING    LDA   #$40
         STA   LBFCB
LBFAD    DEC   LBFCC
         BNE   LBFAD
         LDA   LBFCB
         LSR
         BCC   LBFBB
         LDA   SPKR
LBFBB    LDA   LBFCB
         AND   #$03
         BNE   LBFC5
         LDA   SPKR
LBFC5    DEC   LBFCB
         BNE   LBFAD
         RTS

LBFCB    DB    $00
LBFCC    DB    $00

         HEX   CF0200FFFFFFFF00000000FFFFFFFF00
         HEX   000000FFFFFFFF00000000FFFFFFFF00
         HEX   000000FFFFFFFF00000000FFFFFFFF00
         HEX   000000
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3077
Localisation: Le Chesnay, France

MessagePosté le: Ven 31 Aoû 2007, 9:25    Sujet du message: Répondre en citant

And the code of my modified RWTS. Please note that the write routine has been commented as there are some timing issues with it. I wanted to get room on the memory thus replacing opcodes but that led to timing problems: my 32 cycles were lost...

Code:

*
* SSG: MacArthur's war
*
* Modified source code, LoGo 2007
*

         ORG   $BD00
         MX    %11
         LST   OFF

*
* EQUATES
*

RWTS_BUF_LOW = $00
RWTS_BUF_HIGH = $01
RWTS_COMMAND = $03
RWTS_TRACK =   $04
RWTS_SECTOR =  $05
RWTS_TRIES1 =  $06
RWTS_TRIES2 =  $07

PTR_RAM  =     $3E

SECTOR_READ =  $2D
TRACK_READ =   $2E

MAX_SECTOR =   $0A
MAX_TRACK =    $23

COMMAND_READ = $01
COMMAND_WRITE = $02

LBC00    =     $0280

CURRENT_SLOT = $03D3
CURRENT_DRIVE = $03D4

SPKR     =     $C030

*
* RWTS
*

         LDA   CURRENT_DRIVE ; DRIVE
         LSR
         BCS   LBD28
         LDA   $C0EB      ; drive 2
         BCC   LBD2B
LBD28    LDA   $C0EA      ; drive 1

LBD2B    LDA   $C0E9      ; turn drive on

         LDA   RWTS_COMMAND
         CMP   #COMMAND_READ
         BEQ   LBD3C

         LDY   #$03
LBD36    JSR   WAIT
         DEY
         BPL   LBD36

*
* ARE WE ON THE RIGHT TRACK AND SECTOR ?
*

LBD3C    LDA   #$05
         STA   RWTS_TRIES2

LBD40    LDA   #$30
         STA   RWTS_TRIES1

LBD44    JSR   READ_ADDRESS
         BCC   LBD61
         DEC   RWTS_TRIES1
         BPL   LBD44
         LDA   #$16
         STA   RWTS_PHASE
         LDA   #$00
         DEC   RWTS_TRIES2
         BNE   LBD5B
         JMP   EXIT_ERR

LBD5B    JSR   MOVE_ARM
         JMP   LBD40

* ADDRESS FIELD FOUND

LBD61    LDA   TRACK_READ ; are we on the right track ?
         CMP   RWTS_TRACK
         BEQ   LBD82

         LDX   $C0E0      ; nope! move
         LDX   $C0E2
         LDX   $C0E4
         LDX   $C0E6

         ASL
         STA   RWTS_PHASE
         LDA   RWTS_TRACK
         ASL
         JSR   MOVE_ARM
         JMP   LBD44

* WE ARE ON THE RIGHT TRACK

*LBD82 LDA RWTS_SECTOR
* CMP SECTOR_READ
* BEQ LBD93

* DEC RWTS_TRIES1
* BPL LBD44
* DEC RWTS_TRIES2
* BNE LBD40
* JMP EXIT_ERR

* WE ARE WELL-PLACED

LBD82    =     *

LBD93    LDA   RWTS_COMMAND
         CMP   #COMMAND_WRITE
         BEQ   LBDA5

         JSR   READ_SECTOR
         BCC   LBDA8

         DEC   RWTS_TRIES1
         BMI   EXIT_ERR
         JMP   LBD44

LBDA5    JSR   WRITE_SECTOR

* LOOP UNTIL WE REACH THE END!

LBDA8    LDA   RWTS_BUF_LOW ; next page
         CMP   RWTS_BUF_HIGH
         BEQ   EXIT
         CLC
         ADC   #$01
         STA   RWTS_BUF_LOW

         INC   RWTS_SECTOR ; next sector
         LDA   RWTS_SECTOR
         CMP   #MAX_SECTOR
         BNE   LBD3C

LBDC7    LDA   #$00       ; next track
         STA   RWTS_SECTOR
         INC   RWTS_TRACK
         JMP   LBD3C

*
*
*

EXIT_ERR JSR   BOING

EXIT     STA   $C0EE
         CMP   $C0EC
         LDA   $C0E8
         RTS

*
* READ ADDRESS
*

READ_ADDRESS LDY #$F8
         STY   $26
LBDEF    INY
         BNE   LBDF6
         INC   $26
         BEQ   LBDE9
LBDF6    LDA   $C0EC
         BPL   LBDF6
LBDFB    CMP   #$D5
         BNE   LBDEF
LBE00    LDA   $C0EC
         BPL   LBE00
         CMP   #$AA
         BNE   LBDFB
LBE0B    LDA   $C0EC
         BPL   LBE0B
         CMP   #$96       ; WAS $B5
         BNE   LBDFB

         LDX   #$03
         LDA   #$00
LBE16    STA   $27
LBE18    LDA   $C0EC
         BPL   LBE18
         ROL
         STA   $26
LBE20    LDA   $C0EC
         BPL   LBE20
         AND   $26
         STA   |$002C,X   ; 2C+3 : VOLUME
         EOR   $27        ; 2C+2 : TRACK
         DEX              ; 2C+1 : SECTOR
         BPL   LBE16      ; 2C+0 : CHECKSUM
         TAY
         BNE   LBDE9

         LDX   RWTS_SECTOR
         LDA   SECTOR_READ
         CMP   INTERLEAVING,X
         BNE   LBDEF

         CLC
         RTS
LBDE9    SEC
         RTS

*
* READ SECTOR
*

READ_SECTOR LDA #$00
         STA   PTR_RAM
         LDA   RWTS_BUF_LOW
         STA   PTR_RAM+1

         LDY   #$20
LB8DE    DEY
         BEQ   LB942
]LP      LDA   $C0EC
         BPL   ]LP
LB8E6    EOR   #$D5
         BNE   LB8DE
]LP      LDA   $C0EC
         BPL   ]LP
LB8F0    CMP   #$AA
         BNE   LB8E6
         LDY   #$56
]LP      LDA   $C0EC
         BPL   ]LP
LB8FA    CMP   #$AD
         BNE   LB8E6

         LDA   #$00
LB901    DEY
         STY   $26
]LP      LDY   $C0EC
         BPL   ]LP
         EOR   LBA96-$96,Y
         LDY   $26
         STA   LBC00,Y
         BNE   LB901
LB913    STY   $26
]LP      LDY   $C0EC
         BPL   ]LP
         EOR   LBA96-$96,Y
         LDY   $26
         STA   (PTR_RAM),Y
         INY
         BNE   LB913
]LP      LDY   $C0EC
         BPL   ]LP
         CMP   LBA96-$96,Y
         BEQ   DENIBBLIZE
LB942    SEC
         RTS

*

DENIBBLIZE LDY #$00
LB8C4    LDX   #$56
LB8C6    DEX
         BMI   LB8C4
         LDA   (PTR_RAM),Y
         LSR   LBC00,X
         ROL
         LSR   LBC00,X
         ROL
         STA   (PTR_RAM),Y
         INY
         BNE   LB8C6
         RTS

*
* WRITE_SECTOR
*

WRITE_SECTOR CLC
         RTS

*NIBBLIZE LDX #$00
* STX PTR_RAM
* LDY #$02
*LB804 DEY
* LDA (PTR_RAM),Y
* LSR
* ROL LBC00,X
* LSR
* ROL LBC00,X
* STA LBB00,Y
* INX
* CPX #$56
* BCC LB804
* LDX #$00
* TYA
* BNE LB804
* LDX #$55
*LB81E LDA LBC00,X
* AND #$3F
* STA LBC00,X
* DEX
* BPL LB81E
* RTS

* SEC
* STX $27
* STX $0678
* LDA $C08D,X
* LDA $C08E,X
* BMI LB8B4
* LDA LBC00
* STA $26
* LDA #$FF
* STA $C08F,X
* ORA $C08C,X
* PHA
* PLA
* NOP
* LDY #$04
*LB84A PHA
* PLA
* JSR LB8B9
* DEY
* BNE LB84A
*LB852 LDA #$D5
* JSR LB8B8
*LB857 LDA #$AA
* JSR LB8B8
*LB85C LDA #$AD
* JSR LB8B8
* TYA
* LDY #$56
* BNE LB869
*LB866 LDA LBC00,Y
*LB869 EOR LBC00-1,Y
* TAX
* LDA LBA29,X
* LDX $27
* STA $C08D,X
* LDA $C08C,X
* DEY
* BNE LB866
* LDA $26
* NOP
*LB87E EOR LBB00,Y
* TAX
* LDA LBA29,X
* LDX $0678
* STA $C08D,X
* LDA $C08C,X
* LDA LBB00,Y
* INY
* BNE LB87E
* TAX
* LDA LBA29,X
* LDX $27
* JSR LB8BB
*LB89D LDA #$DE
* JSR LB8B8
*LB8A2 LDA #$AA
* JSR LB8B8
*LB8A7 LDA #$EB
* JSR LB8B8
* LDA #$FF
* JSR LB8B8
* LDA $C08E,X
*LB8B4 LDA $C08C,X
* RTS

*LB8B8 CLC
*LB8B9 PHA
* PLA
*LB8BB STA $C08D,X
* ORA $C08C,X
* RTS

*
* MOVE ARM
*

MOVE_ARM STA   $2A
LBE4E    LDA   RWTS_PHASE
         STA   $27
         SEC
         SBC   $2A
         BEQ   LBE79
         BCS   LBE5F
         INC   RWTS_PHASE
         BCC   LBE62
LBE5F    DEC   RWTS_PHASE
LBE62    JSR   LBE7C
         JSR   MOVE_WAIT
         LDA   $27
         AND   #$03
         ASL
         TAY
         LDA   $C0E0,Y
         JSR   MOVE_WAIT
         BEQ   LBE4E
LBE79    JSR   MOVE_WAIT
LBE7C    LDA   RWTS_PHASE
         AND   #$03
         ASL
         TAY
         LDA   $C0E1,Y
         RTS

MOVE_WAIT LDA  #$28
         JMP   WAIT

RWTS_PHASE DB  $00

*
* WAIT
*

WAIT     SEC
LBF9D    PHA
LBF9E    SBC   #$01
         BNE   LBF9E
         PLA
         SBC   #$01
         BNE   LBF9D
         RTS

*
*
*

BOING    LDX   #$40
LBFAD    LDY   #$00
]LP      DEY
         BNE   ]LP
         TXA
         LSR
         BCC   LBFBB
         LDA   SPKR
LBFBB    TXA
         AND   #$03
         BNE   LBFC5
         LDA   SPKR
LBFC5    DEX
         BNE   LBFAD
         RTS

         DS    \

*
* DATA 6*2
*

INTERLEAVING HEX 000D0B09070503010E0C0A080604020F

* THE NIBBLE TABLE

LBA29    HEX   96979A9B9D9E9FA6A7ABACADAEAFB2B3
         HEX   B4B5B6B7B9BABBBCBDBEBFCBCDCECFD3
         HEX   D6D7D9DADBDCDDDEDFE5E6E7E9EAEBEC
         HEX   EDEEEFF2F3F4F5F6F7F9FAFBFCFDFEFF

* INDEX IN THE NIBBLE TABLE

LBA96    HEX   0001989902039C040506A0A1A2A3A4A5
         HEX   0708A8A9AA090A0B0C0DB0B10E0F1011
         HEX   1213B81415161718191AC0C1C2C3C4C5
         HEX   C6C7C8C9CA1BCC1C1D1ED0D1D21FD4D5
         HEX   2021D822232425262728E0E1E2E3E429
         HEX   2A2BE82C2D2E2F303132F0F133343536
         HEX   3738F8393A3B3C3D3E3F

         DS    \
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Oz



Inscrit le: 29 Aoû 2007
Messages: 49
Localisation: Courbevoie, France

MessagePosté le: Ven 31 Aoû 2007, 20:09    Sujet du message: Répondre en citant

Depuis quand écris tu tes instructions en MAJUSCULE ?

Olivier
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com