Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.1 - CLIENT : 54.162.164.86

 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 

Con*putation (Thesis/Softsmith, 1980/1983)

 
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: 2893
Localisation: Le Chesnay, France

MessagePosté le: Jeu 13 Avr 2017, 9:04    Sujet du message: Con*putation (Thesis/Softsmith, 1980/1983) Répondre en citant

#917 - An educational game of simple math and memory for Grades 1-3. Re-released in 1983 by SoftSmith Software, originally written by Thesis in 1980.

Disk structure
The game comes on a single-sided 5.25" floppy disk. The format is interesting:
- there are half tracks, two only for the title picture,
- the header markers are OK, the epilog markers are FFFF instead of DEAA,
- in the header field, the track 4*4 nibbles are always 0 whatever the track,
- only the first seven tracks are formatted.
Understand that you cannot copy the disk at all!

Let's boot trace
Let's perform our usual trace:
Code:

9600<C600.C6FFM
96FB:20 FDDA 60 (non-IIgs users, use 96F8)
9600G
01

Only one sector is loaded at $0800 and executed.

The code loads the usual SoftSmith animated logo at $5000 and then loads some other code at $0400 and passes control to it.

At $400, the code contains routines to move the arm (either a .5 or 1-track step) and full track or partial sectors loads, that is all and sufficient.

If you want to load some sectors, use A (address), X (end sector), Y (first sectors) and call the read routine. That is simple and efficient.

We want to load the $5000 animated logo:
Code:

9600<C600.C6FFM
96FB:A9 4C 8D 82B A9 59 8D 82C A9 FF 8D 82D 4C 801
9600G

You now have it. Save it!

We want to load the second boot part at $0400. As it is in the text area, we change the load address:
Code:

96FB:A9 2C 8D 82B A9 12 8D 836 A9 14 8D 844 A9 59 8D 849 A9 FF 8D 84A 4C 801
9600G

And we now have it in $1400. Save it again!

We want to load the entire program in memory:
Code:

120:48 A9 4C 8D 44A A9 59 8D 44B A9 FF 8D 44C 68 4C 400
96FB:A9 20 8D 849 A9 01 8D 84A 4C 801
9600G

We first put some code in the stack area to change values before passing control to the second boot phase and we execute it.

The program is now fully loaded in memory:
$0800..$1FFF: the hires character code and data
$2000..$3FFF: the title picture
$4000..$54FF: the BASIC program

The rewrite
I did major modifications to the boot process. Why major? Because I did not keep the SoftSmith animation and put all code and data on a dual-boot DOS 3.3 slave disk.
How? I first formatted a blank DOS 3.3 slave disk. At $B738 (T0/S1), I call the dual-boot routine at $B6B8. If you press open-apple, you load the DOS 3.3 operating system, otherwise you directly load the program and transfer control to the init code at $5500 (install Applesoft, run the program)

In the disk, I have added the binary files of the different boot phases and also some disassembly of it. Read the CON.0200.O.S source file, it contains an interesting initialization of the Applesoft BASIC and the way to transfer control to it.

The disk image is available at http://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,

LoGo
4/2017


Dernière édition par toinet le Jeu 13 Avr 2017, 9:10; é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: 2893
Localisation: Le Chesnay, France

MessagePosté le: Jeu 13 Avr 2017, 9:06    Sujet du message: Répondre en citant

The RWTS change to transfer control to my dual-boot routine:
Code:

----------- DISASSEMBLY MODE -----------
0027:8D F4 B7       STA   $B7F4         
002A:8A             TXA                 
002B:4A             LSR                 
002C:4A             LSR                 
002D:4A             LSR                 
002E:4A             LSR                 
002F:AA             TAX                 
0030:A9 00          LDA   #$00         
0032:9D F8 04       STA   $04F8,X       
0035:9D 78 04       STA   $0478,X       
0038:20 B8 B6       JSR   $B6B8         ; dual-boot please
003B:A2 FF          LDX   #$FF         
003D:9A             TXS                 
003E:8E EB B7       STX   $B7EB         
0041:4C C8 BF       JMP   $BFC8         
0044:20 89 FE       JSR   $FE89         
0047:4C 84 9D       JMP   $9D84         
004A:AD E7 B7       LDA   $B7E7         
004D:38             SEC                 
004E:ED F1 B7       SBC   $B7F1         
0051:8D E1 B7       STA   $B7E1         
0054:AD E7 B7       LDA   $B7E7         
0057:8D F1 B7       STA   $B7F1         


And the dual-boot code:
Code:

----------- DISASSEMBLY MODE -----------
00B8:AD 61 C0       LDA   $C061         ; open-apple?
00BB:10 03          BPL   $00C0         
00BD:4C 93 B7       JMP   $B793         ; yes, DOS 3.3 load
00C0:A9 07          LDA   #$07          ; direct load
00C2:8D EC B7       STA   $B7EC         ; from T7/SF to T3/S0
00C5:A9 0F          LDA   #$0F         
00C7:8D ED B7       STA   $B7ED         
00CA:A9 57          LDA   #$57         
00CC:8D F1 B7       STA   $B7F1         
00CF:A9 50          LDA   #$50         
00D1:8D E1 B7       STA   $B7E1         
00D4:AD 50 C0       LDA   $C050         ; HGR
00D7:AD 52 C0       LDA   $C052         
00DA:AD 54 C0       LDA   $C054         
00DD:AD 57 C0       LDA   $C057         
00E0:20 93 B7       JSR   $B793         ; load
00E3:4C 00 55       JMP   $5500         ; and run
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: 2893
Localisation: Le Chesnay, France

MessagePosté le: Jeu 13 Avr 2017, 9:10    Sujet du message: Répondre en citant

The code at $5500 to init some values and run the basic program that is located at $4001.

Code:

----------- DISASSEMBLY MODE -----------
0000:A9 A9          LDA   #$A9          ; I reset some values
0002:8D 00 08       STA   $0800         ; the program does it also
0005:A9 20          LDA   #$20         
0007:8D 01 08       STA   $0801         
000A:A9 8D          LDA   #$8D         
000C:8D 02 08       STA   $0802         
000F:A9 F0          LDA   #$F0          ; I also set that
0011:85 36          STA   $36           
0013:A9 FD          LDA   #$FD         
0015:85 37          STA   $37           
0017:2C 81 C0       BIT   $C081         ; is Applesoft active?
001A:A9 4C          LDA   #$4C         
001C:CD 00 E0       CMP   $E000         
001F:F0 0B          BEQ   $002C         
0021:2C 80 C0       BIT   $C080         
0024:CD 00 E0       CMP   $E000         
0027:F0 03          BEQ   $002C         
0029:2C 81 C0       BIT   $C081         
002C:A9 37          LDA   #$37          ; set KSWL/H
002E:85 38          STA   $38           ; to the code below
0030:A9 55          LDA   #$55         
0032:85 39          STA   $39           
0034:4C 00 E0       JMP   $E000         ; and call Applesoft
0037:A9 40          LDA   #$40          ; basic pgm at $4001
0039:85 68          STA   $68           
003B:20 89 FE       JSR   $FE89         ; setvid
003E:A9 60          LDA   #$60          ; put a RTS
0040:8D EA 03       STA   $03EA         
0043:20 65 D6       JSR   $D665         ; inside the NEW call
0046:85 33          STA   $33           ; prompt
0048:85 D8          STA   $D8           ; errflg
004A:4C D2 D7       JMP   $D7D2         ; execute next Applesoft command
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
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