mirror of
https://github.com/peterdell/wudsn-ide.git
synced 2025-01-08 12:31:11 +00:00
473 lines
14 KiB
ArmAsm
473 lines
14 KiB
ArmAsm
********************************
|
|
********************************
|
|
**** DIVERS *****
|
|
**** *****
|
|
********************************
|
|
********************************
|
|
;
|
|
********************************
|
|
* DEPART *
|
|
* INITIALISATIONS DE DEMARRAGE *
|
|
********************************
|
|
;
|
|
;
|
|
DEPART LDA NBASEM
|
|
STA NBASES ;NOMBRE DE BASES
|
|
LDA #$00 ;MISE A 0 DU SCORE
|
|
STA POINTS
|
|
STA POINTS+1
|
|
STA POINTS+2
|
|
STA POINTS+3
|
|
STA POINTS+4
|
|
;
|
|
* EFFACEMENT ECRAN *
|
|
;
|
|
DEPART1 LDA #$00
|
|
JSR BCKGND
|
|
;
|
|
********************************
|
|
* INITIALISATION ENVAHISSEURS *
|
|
********************************
|
|
;
|
|
LDA #$00 ;# 1ERE LIGNE D'ENV.
|
|
STA L1
|
|
LDA NLMAX ;# DERNIERE LIGNE
|
|
STA L2
|
|
LDA #$00 ;# 1ERE COLONNE
|
|
STA C1
|
|
LDA MAXENV ;NBRE PAR LIGNE
|
|
STA C2 ;= # DERNIERE COLONNE
|
|
LDA NENVMAX ;NOMBRE TOTAL
|
|
STA NENV
|
|
;
|
|
LDA Y0 ;LIGNE DE DEPART POUR LA 1ERE LIGNE
|
|
STA YVERT
|
|
LDA X0 ;X DE DEPART POUR LA 1ERE COL.
|
|
STA XHORIZ
|
|
LDA C1
|
|
SEC
|
|
SBC C2
|
|
STA TEMP
|
|
ASL
|
|
CLC
|
|
ADC TEMP
|
|
CLC
|
|
ADC NPOS ;NPOS-3*(C2-C1)
|
|
STA NDPLH ;DECOMPTEUR DE DEPLACEMENTS
|
|
;
|
|
LDA #01
|
|
STA PASH
|
|
;
|
|
LDA FRENV0
|
|
STA FRENV
|
|
STA CPTRENV ;FREQUENCE DE DEPLACEMENT DES ENVAHISSEURS.
|
|
;
|
|
;
|
|
* TABLE DES LIGNES *
|
|
;
|
|
LDA DIFFT ;DIFFERENCE D'ADRESSE DES FORMES TYPE2-TYPE1
|
|
STA TEMP
|
|
;
|
|
LDX NLMAX ;CALCUL ADRESSE TL(X)
|
|
DEPART2 LDA ATLL,X
|
|
STA BDRL
|
|
LDA ATLH,X
|
|
STA BDRH
|
|
;
|
|
LDY MAXENV
|
|
LDA #$01
|
|
DEPART3 STA (BDRL),Y ;MISE A 1 DES SEMAPHORES DE PRESENCE
|
|
DEY
|
|
BPL DEPART3
|
|
LDA TEMP ;DEPLACEMENT ADRESSE
|
|
LDY #$0A
|
|
STA (BDRL),Y
|
|
EOR DIFFT ;COMMUTATION
|
|
STA TEMP
|
|
DEX
|
|
BPL DEPART2
|
|
;
|
|
* TABLE DES SOMMES DE LIGNE *
|
|
;
|
|
LDX NLMAX
|
|
LDA MAXENV
|
|
CLC
|
|
ADC #$01
|
|
DEPART4 STA SLIGNE,X
|
|
DEX
|
|
BPL DEPART4
|
|
;
|
|
* TABLE DES SOMMES COLONNE *
|
|
;
|
|
LDX MAXENV
|
|
LDA NLMAX
|
|
CLC
|
|
ADC #$01
|
|
DEPART5 STA SCOL,X
|
|
DEX
|
|
BPL DEPART5
|
|
LDA CST1
|
|
STA PLUSVITE
|
|
;
|
|
* PASSAGE EN MODE GRAPHIQUE *
|
|
;
|
|
;
|
|
********************************
|
|
* AFFICHAGE DES ABRIS *
|
|
********************************
|
|
;
|
|
LDA #$05
|
|
STA NABRIS ;NOMBRE D'ABRIS
|
|
LDA #$1B ;ABSCISSE DERNIER ABRI
|
|
STA TEMP
|
|
;
|
|
DEPART6 JSR PRABRI
|
|
JSR IMAGE
|
|
LDA TEMP
|
|
SEC
|
|
SBC #$06
|
|
STA TEMP
|
|
DEC NABRIS
|
|
BNE DEPART6
|
|
;
|
|
;
|
|
;
|
|
********************************
|
|
* AFFICHAGE DES ENVAHISSEURS *
|
|
********************************
|
|
;
|
|
;
|
|
JSR AFFENV ;AFFICHAGE
|
|
;
|
|
;
|
|
********************************
|
|
* INITIALISATION DE LA BASE *
|
|
********************************
|
|
;
|
|
LDA XBMIN
|
|
STA XBASE ;ABSCISSE
|
|
LDA #$00
|
|
STA VBASE ;DEPART ARRETE
|
|
;
|
|
LDA FRBASE ;FREQUENCE D'APPEL
|
|
STA CPTRBASE
|
|
JSR PRBASE ;PREPARATION PARAMETRES
|
|
JSR IMAGE ;AFFICHAGE
|
|
;
|
|
********************************
|
|
* TABLE DES BALLES *
|
|
********************************
|
|
;
|
|
LDA FRBA
|
|
STA CPTRBA
|
|
LDA #$00
|
|
STA NBALLES
|
|
STA DBALLE
|
|
LDX NBAMAX
|
|
DEPART7 STA YBALLE,X
|
|
DEX
|
|
BPL DEPART7
|
|
;
|
|
********************************
|
|
* TABLE DES BOMBES *
|
|
********************************
|
|
;
|
|
LDA FRBO
|
|
STA CPTRBO
|
|
LDA #$00
|
|
STA NBOMBES
|
|
LDX NBOMAX
|
|
DEPART8 STA YBOMBE,X
|
|
DEX
|
|
BPL DEPART8
|
|
;
|
|
;
|
|
********************************
|
|
* AFFICHAGE DU SCORE *
|
|
********************************
|
|
;
|
|
;
|
|
JSR PRSCORE
|
|
JSR IMAGE ;AFFICHAGE "SCORE"
|
|
JSR AFFPTS ;AFFICHAGE VALEUR SCORE
|
|
;
|
|
JSR PRREC
|
|
JSR IMAGE ;AFFICHAGE "RECORD"
|
|
JSR AFFREC ;AFFICHAGE VALEUR
|
|
;
|
|
JSR PRBASES
|
|
JSR IMAGE ;AFFICHAGE "BASES"
|
|
LDA NBASES
|
|
SEC
|
|
SBC #$01
|
|
BEQ DEPART10 ;IL N'EN RESTE PLUS EN RESERVE
|
|
STA TEMP
|
|
DEPART9 JSR PRBASE ;PREPARATION PARAMETRES D'AFFICHAGE
|
|
LDA TEMP ;#BASE COURANTE DS RESERVE
|
|
ASL
|
|
ASL
|
|
ASL
|
|
ASL ;*10
|
|
CLC
|
|
ADC Y3 ;ORDONNEE D'AFFICHAGE
|
|
TAY
|
|
LDX X3
|
|
|
|
JSR IMAGE ;AFFICHAGE
|
|
DEC TEMP
|
|
BNE DEPART9
|
|
;
|
|
|
|
DEPART10 RTS
|
|
;
|
|
;
|
|
;
|
|
********************************
|
|
* PRABR: PREPARATION DES *
|
|
* PARAMETRES D'ABRI. *
|
|
********************************
|
|
;
|
|
;
|
|
PRABRI LDA #$03
|
|
STA NOCTETS
|
|
LDA #$10
|
|
STA NLIGNES
|
|
LDY #$90
|
|
LDX TEMP
|
|
LDA #<ABRI
|
|
STA FORMEL
|
|
LDA #>ABRI
|
|
STA FORMEH
|
|
RTS
|
|
;
|
|
;
|
|
********************************
|
|
* IMAGE *
|
|
* AFFICHAGE DE LA FORME (FORMEL*
|
|
* FORMEH) EN (X,Y) *
|
|
********************************
|
|
;
|
|
;
|
|
* DEPARTIALISATIONS *
|
|
;
|
|
IMAGE STY I ;N0 PREMIERE LIGNE
|
|
STX J ;N0 PREMIER OCTET
|
|
;
|
|
LDX #$00 ;TJRS 0 PR ADRESSAGE INDIRECT INDEXE
|
|
;
|
|
* CALCUL ADRESSE PREMIER OCTET *
|
|
* A L'ECRAN *
|
|
;
|
|
IMAGE1 LDY I
|
|
LDA YBP,Y ;ADRESSE DE BASE I (B.P.)
|
|
CLC
|
|
ADC J ;DEPLACEMENT PREMIER OCTET
|
|
STA ADRL
|
|
;
|
|
LDA YHP,Y
|
|
STA ADRH
|
|
;
|
|
* AFFICHAGE LIGNE I *
|
|
;
|
|
LDY #$00 ;INDICE PREMIER OCTET A L'ECRAN
|
|
IMAGE2 LDA (FORMEL,X) ;OCTET COURANT DE LA FORME
|
|
STA (ADRL),Y ;AFFICHAGE A L'ECRAN
|
|
;
|
|
* MISE A JOUR DES # D'OCTETS *
|
|
;
|
|
INY ;PROCHAINOCTET A L'ECRAN
|
|
INC FORMEL ;PROCHAIN OCTET DS TABLE DE FORME
|
|
CPY NOCTETS ;COMPARER AU NBRE D'O/L
|
|
BNE IMAGE2 ;<>0? OUI, I INACHEVEE
|
|
;
|
|
INC I ;LIGNE SUIVANTE
|
|
DEC NLIGNES ;DECOMPTE DES LIGNES
|
|
BNE IMAGE1 ;<>0? OUI, RESTE DES IS
|
|
;
|
|
RTS
|
|
;
|
|
********************************
|
|
* XIMAGE *
|
|
* AFFICHAGE AVEC OU EXCLUSIF *
|
|
* DE LA FORME (FORMEL,FORMEH) *
|
|
* EN (X,Y). *
|
|
********************************
|
|
;
|
|
;
|
|
* INITIALISATIONS *
|
|
;
|
|
XIMAGE STY I ;N0 PREMIERE LIGNE
|
|
STX J ;N0 PREMIER OCTET
|
|
;
|
|
LDX #$00 ;TJRS 0 PR ADRESSAGE INDIRECT INDEXE
|
|
;
|
|
* CALCUL ADRESSE PREMIER OCTET *
|
|
* A L'ECRAN *
|
|
;
|
|
XIMAGE1 LDY I
|
|
LDA YBP,Y ;ADRESSE DE BASE I (B.P.)
|
|
CLC
|
|
ADC J ;DEPLACEMENT PREMIER OCTET
|
|
STA ADRL
|
|
;
|
|
LDA YHP,Y
|
|
STA ADRH
|
|
;
|
|
* AFFICHAGE LIGNE I *
|
|
;
|
|
LDY #$00 ;INDICE PREMIER OCTET A L'ECRAN
|
|
XIMAGE2 LDA (FORMEL,X) ;OCTET COURANT DE LA FORME
|
|
EOR (ADRL),Y
|
|
STA (ADRL),Y ;AFFICHAGE A L'ECRAN
|
|
;
|
|
* MISE A JOUR DES # D'OCTETS *
|
|
;
|
|
INY ;PROCHAINOCTET A L'ECRAN
|
|
INC FORMEL ;PROCHAIN OCTET DS TABLE DE FORME
|
|
CPY NOCTETS ;COMPARER AU NBRE D'O/L
|
|
BNE XIMAGE2 ;<>0? OUI, I INACHEVEE
|
|
;
|
|
INC I ;LIGNE SUIVANTE
|
|
DEC NLIGNES ;DECOMPTE DES LIGNES
|
|
BNE XIMAGE1 ;<>0? OUI, RESTE DES IS
|
|
;
|
|
RTS
|
|
;
|
|
********************************
|
|
* XCIMAGE *
|
|
* AFFICHAGE AVEC OU EXCLUSIF *
|
|
* ET TEST COLLISION. *
|
|
********************************
|
|
;
|
|
;
|
|
* INITALISATIONS *
|
|
;
|
|
XCIMAGE STY I ;N0 PREMIERE LIGNE
|
|
STX J ;N0 PREMIER OCTET
|
|
;
|
|
LDX #$00 ;TJRS 0 PR ADRESSAGE INDIRECT INDEXE
|
|
;
|
|
LDA #$FF
|
|
STA COLLIS ;SEMAPHORE DESARME
|
|
;
|
|
* CALCUL ADRESSE PREMIER OCTET *
|
|
* A L'ECRAN *
|
|
;
|
|
XCIMAGE1 LDY I
|
|
LDA YBP,Y ;ADRESSE DE BASE I (B.P.)
|
|
CLC
|
|
ADC J ;DEPLACEMENT PREMIER OCTET
|
|
STA ADRL
|
|
;
|
|
LDA YHP,Y
|
|
STA ADRH
|
|
;
|
|
* AFFICHAGE LIGNE I *
|
|
;
|
|
LDY #$00 ;INDICE PREMIER OCTET A L'ECRAN
|
|
XCIMAGE2 LDA (FORMEL,X) ;OCTET COURANT DE LA FORME
|
|
PHA ;SAUVEGARDE
|
|
AND (ADRL),Y ;TEST COLLISION
|
|
BEQ XCIMAGE3 ;PAS DE PROBLEME
|
|
STY COLLIS ;SEMAPHORE <>0
|
|
;
|
|
XCIMAGE3 PLA ;RESTAURATION OCTET FORME
|
|
EOR (ADRL),Y
|
|
STA (ADRL),Y ;AFFICHAGE A L'ECRAN
|
|
;
|
|
* MISE A JOUR DES # D'OCTETS *
|
|
;
|
|
INY ;PROCHAINOCTET A L'ECRAN
|
|
INC FORMEL ;PROCHAIN OCTET DS TABLE DE FORME
|
|
CPY NOCTETS ;COMPARER AU NBRE D'O/L
|
|
BNE XCIMAGE2 ;<>0? OUI, I INACHEVEE
|
|
;
|
|
INC I ;LIGNE SUIVANTE
|
|
DEC NLIGNES ;DECOMPTE DES LIGNES
|
|
BNE XCIMAGE1 ;<>0? OUI, RESTE DES IS
|
|
;
|
|
RTS
|
|
;
|
|
********************************
|
|
* NIMAGE *
|
|
* AFFICHAGE EN NOIR D'UNE *
|
|
* FORME. *
|
|
********************************
|
|
;
|
|
;
|
|
* INITIALISATIONS *
|
|
;
|
|
NIMAGE STY I ;N0 PREMIERE LIGNE
|
|
STX J ;N0 PREMIER OCTET
|
|
;
|
|
LDX #$00 ;TJRS 0 PR ADRESSAGE INDIRECT INDEXE
|
|
;
|
|
* CALCUL ADRESSE PREMIER OCTET *
|
|
* A L'ECRAN *
|
|
;
|
|
NIMAGE1 LDY I
|
|
LDA YBP,Y ;ADRESSE DE BASE I (B.P.)
|
|
CLC
|
|
ADC J ;DEPLACEMENT PREMIER OCTET
|
|
STA ADRL
|
|
;
|
|
LDA YHP,Y
|
|
STA ADRH
|
|
;
|
|
* AFFICHAGE LIGNE I *
|
|
;
|
|
LDY #$00 ;INDICE PREMIER OCTET A L'ECRAN
|
|
NIMAGE2 LDA (FORMEL,X) ;OCTET COURANT DE LA FORME
|
|
EOR #$FF ;COMPLEMENT
|
|
AND (ADRL),Y ;OCTET PAGE GRAPHIQUE
|
|
STA (ADRL),Y ;AFFICHAGE A L'ECRAN
|
|
;
|
|
* MISE A JOUR DES # D'OCTETS *
|
|
;
|
|
INY ;PROCHAINOCTET A L'ECRAN
|
|
INC FORMEL ;PROCHAIN OCTET DS TABLE DE FORME
|
|
CPY NOCTETS ;COMPARER AU NBRE D'O/L
|
|
BNE NIMAGE2 ;<>0? OUI, I INACHEVEE
|
|
;
|
|
INC I ;LIGNE SUIVANTE
|
|
DEC NLIGNES ;DECOMPTE DES LIGNES
|
|
BNE NIMAGE1 ;<>0? OUI, RESTE DES IS
|
|
;
|
|
RTS
|
|
;
|
|
********************************
|
|
* DELAI: ROUTINE DE PAUSE *
|
|
********************************
|
|
;
|
|
;
|
|
DELAI STA D2
|
|
LDA #$00
|
|
STA D1
|
|
DELAI1 DEC D1
|
|
BNE DELAI1
|
|
DEC D2
|
|
BNE DELAI1
|
|
RTS
|
|
;
|
|
;
|
|
********************************
|
|
* GENERE DEUX NOMBRES RND1 & 2 *
|
|
* HASARD *
|
|
********************************
|
|
;
|
|
HASARD LDA RND2
|
|
CLC
|
|
ADC #$01
|
|
CMP #$07
|
|
BNE HASARD1
|
|
LDA #$00
|
|
HASARD1 STA RND2
|
|
LDA RND1
|
|
CLC
|
|
ADC #$01
|
|
CMP #$89
|
|
BNE HASARD2
|
|
LDA #$00
|
|
HASARD2 STA RND1
|
|
RTS
|