Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.1 - CLIENT : 54.225.18.187

 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 

Starquest- Rescue at Rigel (Epyx, 1980)

 
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
Olivier



Inscrit le: 30 Déc 2011
Messages: 15

MessagePosté le: Ven 05 Oct 2012, 23:32    Sujet du message: Starquest- Rescue at Rigel (Epyx, 1980) Répondre en citant

I've this game on its original floppy, which I've SST'ed and I'm now trying to run under AppleWin from a merged DSK file. I've quickly checked that my boot1 bytes are the same I have on the floppy.

This is my first boot tracing, I'm a total noob (motived though Very Happy) ,and I've a question: what happens at $86C?

I know I'm supposed to find the jump to boot2 but i don't see it Embarassed. What am I missing?

Merci !

Olivier.

Code:

0800: 02            ???             ; Meaning 2 sectors will be loaded… So $800 -> $9FF?
0801: 90 4A         BCC  $084D      ; Right before JMP $801, we had a x6F6: BCC not taken, so we shouldn't take this one either: C=1 when we arrive here…
0803: C6 27         DEC  $27        ; Contains 9 after
0805: BD 31 09      LDA  $0931,X    ; Contains $76 after
0808: 49 B0         EOR  #$B0       ; Then $C6
080A: 48            PHA             ; Pushing $C6
080B: C6 3D         DEC  $3D        ; Contains $01 after
080D: 98            TYA             ; A now contains 0
080E: C8            INY   
080F: 48            PHA             ; Pushing 0
0810: CE 00 08      DEC  $0800      ; Contains 1 after
0813: A9 20         LDA  #$20   
0815: C6 27         DEC  $27        ; Contains 8 after
0817: 48            PHA             ; Pushing 20
0818: 51 26         EOR  ($26),Y    ; EOR with $90, now A=$B0
081A: 91 26         STA  ($26),Y    ; $801 just became $B0
081C: AA            TAX   
081D: A5 27         LDA  $27        ; A=$08 after
081F: 85 32         STA  $32   
0821: CE 00 08      DEC  $0800      ; $800 is now 0 after
0824: A8            TAY   
0825: B5 33         LDA  $33,X      ; A is $0 after this call
0827: 84 29         STY  $29        ; Store $08 in $29
0829: 84 21         STY  $21        ; And in $21
082B: 8A            TXA             ; A is $0 after
082C: A2 17         LDX  #$17   
082E: 86 31         STX  $31        ; $31 contains $17 now
0830: D5 33         CMP  $33,X      ; CMP with of A=$B0 with $0
0832: A6 2B         LDX  $2B        ; X becomes $60
0834: 5D 31 09      EOR  $0931,X    ; $991=$76, result is A=$C6
0837: 85 29         STA  $29        ; Stored in $29
0839: 5D 32 09      EOR  $0932,X    ; $992=$60, result is A=$A6
083C: C6 3D         DEC  $3D        ; $3D contains $0 after
083E: 85 28         STA  $28        ; $A6 stored in $28
0840: 5D 33 09      EOR  $0933,X    ; $933=$A3, result is A=$05
0843: 85 48         STA  $48        ; Stored in $48
0845: A0 2B         LDY  #$2B   
0847: 84 20         STY  $20   
0849: C6 40         DEC  $40        ; $40 was 00, now is $FF
084B: 30 3E         BMI  $088B      ; And we jump here
084D: 24 40         BIT  $40   
084F: 30 33         BMI  $0884      ; If we were to reach this instruction, we could reach $900…
0851: 24 24         BIT  $24   
0853: 24 24         BIT  $24   
0855: 40            RTI   
0856: 40            RTI   
0857: 40            RTI   
0858: 40            RTI   
0859: 43            ???   
085A: 4F            ???   
085B: 50 59         BVC  $08B6   
085D: 52 49         EOR  ($49)   
085F: 47            ???   
0860: 48            PHA   
0861: 54            ???   
0862: 31 39         AND  ($39),Y   
0864: 38            SEC   
0865: 31 40         AND  ($40),Y   
0867: 40            RTI   
0868: 40            RTI   
0869: 40            RTI   
086A: 41 50         EOR  ($50,X)   
086C: 50 4C         BVC  $08BA   
086E: 45 20         EOR  $20   
0870: 43            ???   
0871: 4F            ???   
0872: 4D 50 55      EOR  $5550   
0875: 54            ???   
0876: 45 52         EOR  $52   
0878: 20 49 4E      JSR  $4E49   
087B: 43            ???   
087C: 40            RTI   
087D: 40            RTI   
087E: 40            RTI   
087F: 40            RTI   
0880: 24 24         BIT  $24   
0882: 24 24         BIT  $24   
0884: C5 48         CMP  $48   
0886: D0 03         BNE  $088B   
0888: 4C 00 09      JMP  $0900   
088B: A4 48         LDY  $48        ; $48 contains $05
088D: EA            NOP   
088E: BD 8C C0      LDA  $C08C,X    ; $C0EC (X=$60) contains $00 (?), A is $BE on first pass, AA on second
0891: 10 FB         BPL  $088E   
0893: 51 20         EOR  ($20),Y    ; EOR with $830=$D5, now A is $6B on first pass
0895: D0 F4         BNE  $088B      ; So we branch on first pass
0897: 2C 40 40      BIT  $4040   
089A: BD 8C C0      LDA  $C08C,X   
089D: 10 FB         BPL  $089A   
089F: D1 31         CMP  ($31),Y    ; $AA
08A1: D0 F0         BNE  $0893   
08A3: 2C 40 40      BIT  $4040   
08A6: BD 8C C0      LDA  $C08C,X   
08A9: 10 FB         BPL  $08A6   
08AB: CD D0 FF      CMP  $FFD0      ; $EF
08AE: D0 E3         BNE  $0893      ; So data prolog is $D5 $AA $EF?
08B0: 38            SEC             ; C was already set… Here, A=$EF, X=$60, Y=$05, and stack is 20 00 C6 B0 C2 00 37
08B1: 2C 40 40      BIT  $4040      ; $4040=$FF, A unchanged
08B4: BD 8C C0      LDA  $C08C,X    ; A=$AA after
08B7: 10 FB         BPL  $08B4   
08B9: 2A            ROL             ; Now A=$55
08BA: 8D C3 08      STA  $08C3      ; Stored here
08BD: BD 8C C0      LDA  $C08C,X    ; A=$BA after
08C0: 10 FB         BPL  $08BD   
08C2: 29 FF         AND  #$FF       ; Now A=$10
08C4: 85 27         STA  $27        ; $27=$10, $26=$00, and $800=$0
08C6: 6C 28 00      JMP  ($0028)    ; JMP $C6A6   DOS 3.3 SECTOR DATA HANDLING BLOCK. READS 85 ($55) BYTES OF SECONDARY DATA TO S0300-S0355 AND READS 256 ($100) BYTES Of PRIMARY DATA TO ADDRESS SPECifiED BY $0026-S0027 & 'NIBBLIZE'.
                                  INCREMENT $0027 & $003D AND CHECK AGAINST S0800 TO SEE IF ADDITIONAL SECTORS TO BE READ. If so, reload *16, otherwise, go to $801 to begin executing the second stage of bootstrap.
                                  So we basically go back to $801? Again?
08C9: A0 A0         LDY  #$A0   
08CB: A5 A0         LDA  $A0   
08CD: A0 D0         LDY  #$D0   
08CF: A0 A0         LDY  #$A0   
08D1: FE A0 A0      INC  $A0A0,X   
08D4: FD A0 C3      SBC  $C3A0,X   
08D7: CE CE C1      DEC  $C1CE   
08DA: A0 D3         LDY  #$D3   
08DC: C5 A0         CMP  $A0   
08DE: D7            ???   
08DF: C2            ???   
08E0: A0 A0         LDY  #$A0   
08E2: C4 A0         CPY  $A0   
08E4: A0 A0         LDY  #$A0   
08E6: A0 C9         LDY  #$C9   
08E8: A0 43         LDY  #$43   
08EA: 4F            ???   
08EB: 50 59         BVC  $0946   
08ED: 52 49         EOR  ($49)   
08EF: 47            ???   
08F0: 48            PHA   
08F1: 54            ???   
08F2: 20 31 39      JSR  $3931   
08F5: 38            SEC   
08F6: 31 20         AND  ($20),Y   
08F8: 42            ???   
08F9: 59 20 41      EOR  $4120,Y   
08FC: 50 50         BVC  $094E   
08FE: 4C 45 20      JMP  $2045      ; $900 would become JSR $4345 if reached, but $4345=$00…
0901: 43            ???   
0902: 4F            ???   
0903: 4D 50 55      EOR  $5550   
0906: 54            ???
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
qkumba



Inscrit le: 29 Jan 2012
Messages: 83

MessagePosté le: Sam 06 Oct 2012, 0:36    Sujet du message: Répondre en citant

typo at $82b
$81c - if X=$B0 then...
$82b - A should be $B0

$830 is a dummy instruction to hide the $d5 part of the prologue.

$8c6 - yes, it will return to $801, but $81a changed the instruction from BCC to BCS, so the branch is taken to $84d, and the branch at $84f is also taken to $884
the branch at $886 is taken a few times, so $8c4 is reached and a new value will be placed in $27 each time
$8c6 causes a new a sector to be read to a different location each time

Yes, prolog is $d5 $aa $ef.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Olivier



Inscrit le: 30 Déc 2011
Messages: 15

MessagePosté le: Lun 08 Oct 2012, 16:05    Sujet du message: Répondre en citant

Thank you qkumba! I'm unblocked now and will continue tracing. I need to be more aware of those in-place/in-code statements (I had missed the dummy one and missed the BCC to BCS transformation Confused)
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
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