Dans cette conversion la même méthode pas très subtile a été utilisée pour les trois programmes : chargement à partir de secteurs physiques de la disquette en $6000, puis recopie en $2000 avec écrasement des vecteurs du moniteur, des vecteurs du Basic et du DOS. Le programme de sélection a été reconstitué de toutes pièces en prenant modèle sur la version TO8.
http://dcmoto.free.fr/programmes/les-hi ... index.html
Code : Tout sélectionner
*****************************
* CHARGEUR HITS LORICIELS *
* Daniel Coulom 2015/03/07 *
*****************************
*****************************
* En-tete complementee
* avec checksum
*****************************
ORG $2200 adresse de debut
FDB $E082 $207E complemente
ORG $227F adresse checksum
FCB $F3 checksum
*****************************
* Chargement suite du loader
*****************************
LECT1
LDS #$2800
LDA #$20
TFR A,DP
LDD #$0002 piste 0 secteur 2
LDX #$2300 buffer en $2300
CLR <$4A
STA <$4B numero piste
STB <$4C numero secteur
CLR <$49 code erreur
STX <$4F adresse buffer
LDA #$02 code lecture secteur
STA <$48 code operation
SWI appel fonction systeme
FCB $26 lecture secteur
*****************************
* Presentation et choix
*****************************
LDY #NOMS nom des programmes
LBSR AFFICH affichage nom des programmes
PRES1
SWI appel fonction systeme
FCB $0A scrutation clavier
ANDB #$DF
TSTB test de la touche
BEQ PRES1 pas de touche pressee
CMPB #$59 'Y'
BEQ PRES3 chargement Yeti
CMPB #$50 'P'
BEQ PRES2 chargement Pulsar
CMPB #$45 'E'
BNE PRES1 nouvelle saise
* chargement eliminator
LBSR DISPLAY affichage copyright
LDA #$01 piste de debut = 1
BRA RUN
* chargement pulsar
PRES2
LBSR DISPLAY affichage copyright
LDA #$05 piste de debut = 5
BRA RUN
* chargement yeti
PRES3
LBSR DISPLAY affichage copyright
LDA #$09 piste de debut = 9
BRA RUN
*****************************
* Translation et execution
*****************************
RUN
BSR CHARG chargement programme en $6000
* transfert en $1F40 du programme de translation
LDX #$1F40
LDY #TRANS
PRES5
LDD ,y++
STD ,X++
CMPX #$1F60
BNE PRES5
JMP $1F40 execution translation
*****************************
* Lecture secteur
*****************************
RSECT
PSHS Y
LDY #$2048
CLR $02,Y
STA $03,Y
STB $04,Y
CLR $01,Y
STX $07,Y
LDA #$02
STA ,Y
SWI appel fonction systeme
FCB $26 lecture secteur
PULS Y,PC
*****************************
* Chargement programme
*****************************
CHARG
LDX #$6000 chargement en $6000
TFR A,B numero de piste courante
ADDB #$04 calcul piste de fin
STB CHARG2+1 modifie test piste de fin
LDB #$01 secteur 1
CHARG1
PSHS X,B,A
BSR RSECT lecture secteur
PULS A,B,X
LEAX $0100,X buffer suivant
INCB secteur suivant
CMPB #$11 test secteur 17
BNE CHARG1
LDB #$01 secteur 1
INCA piste suivante
CHARG2
CMPA #$00 test piste de fin
BNE CHARG1
RTS
***********************************
* Translation et execution du jeu
* routine transferee en $1F40
***********************************
TRANS
LDS #$1FFF pointeur de pile systeme
LDD $2073 adresse table des caracteres
PSHS D empilage adresse table
LDX #$2000 adresse destination
LDY #$6000 adresse origine
TRANS1
LDD ,y++ origine
STD ,X++ destination
CMPX #$5C00 test fin du transfert
BNE TRANS1 nouveau transfert
PULS D depilage adresse table
STD $9A00 stockage en $9A00
JMP $2000 execution du jeu
*****************************
* Affichage copyright
*****************************
DISPLAY
LDY #ECRAN
*****************************
* Affichage d'une chaine
*****************************
AFFICH
LDB ,Y+
BEQ AFFICH9
SWI appel fonction systeme
FCB $02 affichage caractere
BRA AFFICH
AFFICH9
RTS
*****************************
* Donnees
*****************************
ECRAN
FCB $1b,$64,$1b,$47,$1b,$54,$0c
FCB $20,$20,$20,$20,$20,$20
FCB $43,$6f,$70,$79,$72,$69,$67,$68,$74 'Copyright'
FCB $20
FCB $4c,$6f,$72,$69,$63,$69,$65,$6c,$73 'Loriciels'
FCB $20
FCB $31,$39,$38,$37 '1987'
FCB $0a,$0d,$0a,$0a,$0a,$0a,$00
NOMS
FCB $1b,$54,$1b,$64,$1b,$47,$0c
FCB $1b,$73,$1f,$48,$4a,$1b,$7b,$59 'Y'
FCB $1b,$72,$1b,$7b,$45,$54,$49 'ETI'
FCB $1f,$4b,$4a,$1b,$73,$1b,$7b,$50 'P'
FCB $1b,$72,$1b,$7b,$55,$4c,$53,$41,$52 'ULSAR'
FCB $1f,$4e,$4a,$1b,$7b,$1b,$73,$45 'E'
FCB $1b,$72,$1b,$7b
FCB $4c,$49,$4d,$49,$4e,$41,$54,$4f,$52 'LIMINATOR'
FCB $1b,$70,$00
*****************************
* Completer a $1000 octets
*****************************
ORG $31FF
FCB $00
END