Langage de programmation des jeux sur Thomson
Modérateurs : Papy.G, fneck, Carl
Re: Langage de programmation des jeux sur Thomson
C'est bien toutes ces discussions, mais ça ne semble pas déboucher sur des réalisations concrètes de jeux sur Thomson
Mon approche pragmatique est plus productive. J'ai finalement compté les cycles pour une meilleure musique.
http://dcmoto.free.fr/programmes/alleycat/index.html
Mon approche pragmatique est plus productive. J'ai finalement compté les cycles pour une meilleure musique.
http://dcmoto.free.fr/programmes/alleycat/index.html
Dernière modification par Daniel le 08 oct. 2021 13:46, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
- Carl
- Modérateur
- Messages : 13290
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Langage de programmation des jeux sur Thomson
Je peux mettre à dispo ces PDF si il y a des demandeurs...
Carl
Re: Langage de programmation des jeux sur Thomson
Je passe mon tour. Et pourtant j'ai été professeur de Turbo-Pascal pendant plus d'un an (au CNAM)
Il faudra m'expliquer comment on fait avec Alley Cat en Pascal sur MO6 (sans timer et sans carte son) pour synchroniser la musique, les changements de texte IBM Corp./SynSoft et les déplacements du chat. Ou mieux qu'une explication, un exemple de programme suffira.
Il faudra m'expliquer comment on fait avec Alley Cat en Pascal sur MO6 (sans timer et sans carte son) pour synchroniser la musique, les changements de texte IBM Corp./SynSoft et les déplacements du chat. Ou mieux qu'une explication, un exemple de programme suffira.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Langage de programmation des jeux sur Thomson
J'ai une autre question svp, sur Thomson certes, mais bon, du coup également pour d'autres bécanes :
Que vaut l'usage de Pokes en BASIC VS Assembleur ?
Je pense que l'assembleur sera toujours plus rapide. Mais le gain, vous pensez qu'il est toujours significatif ou pas ?
Mes questions sont surtout de la curiosité technique, puis que je code et "codais pas" en assembleur et ne pointait pas vers des adresses machines quand je "programmais".
merci
Que vaut l'usage de Pokes en BASIC VS Assembleur ?
Je pense que l'assembleur sera toujours plus rapide. Mais le gain, vous pensez qu'il est toujours significatif ou pas ?
Mes questions sont surtout de la curiosité technique, puis que je code et "codais pas" en assembleur et ne pointait pas vers des adresses machines quand je "programmais".
merci
Re: Langage de programmation des jeux sur Thomson
En assembleur il faut 4 cycles du processeur pour écrire un octet en mémoire.
Avec un POKE l'interpréteur BASIC consomme des centaines (et peut-être des milliers) de cycles pour faire la même chose : il doit passer de ligne en ligne dans le programme pour lire la commande, puis l'analyser, contrôler la syntaxe et décoder les paramètres, convertir les nombres en binaire, les charger dans des registres, retrouver l'adresse de la routine POKE, l'appeler et l'exécuter, puis revenir à l'analyse du programme.
Avec un POKE l'interpréteur BASIC consomme des centaines (et peut-être des milliers) de cycles pour faire la même chose : il doit passer de ligne en ligne dans le programme pour lire la commande, puis l'analyser, contrôler la syntaxe et décoder les paramètres, convertir les nombres en binaire, les charger dans des registres, retrouver l'adresse de la routine POKE, l'appeler et l'exécuter, puis revenir à l'analyse du programme.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Langage de programmation des jeux sur Thomson
Le problème avec l'écriture d'un jeu sur une machine 8 bits est qu'il faut 1) faire une planification minutieuse de la mémoire pour ne pas se retrouver à écrire des choses à nouveau en plein travail 2) apporter les ressources, écrire tout le code, tester, optimiser 3) faire une mécanique qui est amusante, sinon vous n'y jouez qu'une seule fois.
Si l'on considère la base de joueurs chez Thomson, tout ce travail chez ASM n'en vaut pas la peine. En général, ceux qui jouent à l'homebrew sur 8 bits sont de toute façon peu nombreux.
C'est bien mieux d'écrire des petits prototypes comme le tien, qui d'ailleurs est excellent comme toujours et je vous remercie d'avoir posté le code car c'est super pour apprendre les bases du graphisme et du son en ASM sur ces machines. Je suppose que pour MO6, il devrait utiliser #$6000 - #$9F40 pour la VRAM? Je ne sais pas pour le son mais c'est agréable d'entendre les deux voix jouer ensemble.
J'espère que le projet ugBasic évolue bien, car ce serait alors un bon moyen d'inciter les développeurs : temps courts, syntaxe pratique mais performances du langage machine.
Re: Langage de programmation des jeux sur Thomson
Pour le MO6, la VRAM est en $0000-$2000.
La dernière version d'Alley Cat (2021.10.08) est compatible MO6 et PC128.
Code : Tout sélectionner
SETLI 132
;**************************************************;
; A L L E Y - C A T ;
; (c) 2021 - Daniel Coulom ;
; http://dcmoto.free.fr/ ;
; http://forum.system-cfg.com/ ;
;--------------------------------------------------;
; Ce code est distribue gratuitement dans l'espoir ;
; qu'il sera utile, mais sans aucune garantie et ;
; sans engager la responsabilité de l'auteur. ;
; Vous pouvez l' utiliser, le modifier et le ;
; diffuser librement, en conservant cette licence ;
; et les références de l'auteur dans toutes les ;
; copies. L'exploitation commerciale est interdite.;
;**************************************************;
;**************************************************;
; Version 2021.10.08 ;
;**************************************************;
; Historique
; 2021.10.08 Derniers reglages musique et animation
; 2021.10.07 Ralentissement de l'animation du chat
; 2021.10.07 Calcul precis des periodes des notes
; 2021.10.06 Version MOTO compatible MO6 et TO8
; 2021.10.06 Le son fonctionne (a ameliorer)
; 2021.10.05 Ajout du son (pas encore finalise)
; 2021.10.04 Deplacements aleatoires du chat
; 2021.10.03 Debut d'animation
; 2021.10.02 Affichage ecran de presentation
; 2021.09.28 Debut du projet
;===================================================
; TEST DE L'ORDINATEUR UTILISE (MO ou TO)
;===================================================
ORG $7200
LDB >$FFF2 ; poids fort du vecteur SWI3
BPL PRES ; positif --> TO
;===================================================
; MODIFICATION DU PROGRAMME POUR COMPATIBILITE MO6
;===================================================
LDD #$A7DD ; registre 'systeme 2' ($A7DD pour MO6)
STD PRES1+1
LDD #$A7DC ; registre 'affichage' ($A7DC pour MO6)
STD PRES2+1
LDD #$A7C0 ; registre de commutation banque video ($A7C0 pour MO6)
STD PRES3+1
STD PRES4+1
STD PRES5+1
STD PRES6+1
LDD #$2031 ; valeur au hasard ($2031 pour MO6)
STD ANIM+1
LDD #$A7C1 ; buzzer ($A7C1 pour MO6)
STD PLAY2+1
STD PLAY5+1
STD PLAY7+1
LDD #$FE01 ; masques buzzer bas et haut ($FE01 pour MO6)
STA PLAY4+1
STB PLAY6+1
LDD #$0000 ; debut de l'ecran ($0000 pour MO6)
STD RLE+1
LDD #$1F40 ; fin de l'ecran ($1F40 pour MO6)
STD RLE2+1
STD RLE4+1
LDD #$0EB1 ; position initiale chat ($0EB1 pour MO6)
STD ANIM1+1
LDD #$0ED1 ; limite droite du chat ($0ED1 pour MO6)
STD ANIMD+1
LDD #$0EB6 ; limite gauche du chat ($0EB6 pour MO6)
STD ANIMG+1
LDD #$1D4C ; position sigle ($1D4C pour MO6)
STD SIGLE1+1
;===================================================
; AFFICHAGE ECRAN DE PRESENTATION
;===================================================
PRES
ORCC #$50 ; masquer les interruptions
LDU #MUSIC ; pointeur note de musique
LDA #$02 ; 2 = vert
PRES1
STA $E7DD ; couleur de fond
LDA #$21 ; $21 = mode bitmap4
PRES2
STA $E7DC ; selection mode video
PRES3
LDA $E7C3 ; registre PRC du 6846
ANDA #$FE ; clear bit 0
PRES4
STA $E7C3 ; selection video couleur
LDY #VRAM0 ; pointeur donnees video couleur
LBSR RLE ; decodage RLE
PRES5
LDA $E7C3 ; registre PRC du 6846
ORA #$01 ; set bit 0
PRES6
STA $E7C3 ; selection video forme
LDY #VRAM1 ; pointeur donnees video forme
LBSR RLE ; decodage RLE
;===================================================
; ANIMATION DU CHAT
;===================================================
ANIM
LDB $E7C7 ; hasard: $E7C7(TO) ou $2031(MO)
PSHS B ; seed pour nombre au hasard
ANIM1
LDX #$4EB1 ; position initiale du chat
BSR AVD ; avance a droite
ANIM2
LDA COMPTE ; compteur de deplacements
INCA ; incrementation du
STA COMPTE ; compteur de deplacements
CMPA #$04 ; test 4 deplacements
BNE ANIM3 ; sinon continuer
LDY #SYNSOFT ; sigle SynSoft
LBSR SIGLE ; afficher le sigle
BRA ANIM4 ; continuer l'animation
ANIM3
CMPA #$08 ; test 8 deplacements
BNE ANIM4 ; sinon continuer
LDY #IBM ; sigle IBM
LBSR SIGLE ; afficher le sigle
CLRA ; remise a zero du
STA COMPTE ; compteur de deplacements
ANIM4
LDA #249 ; pour generation nombre au hasard
PULS B ; ancien seed
MUL ; multiplication
ADDD #123 ; addition
PSHS B ; nouveau seed
ANDA #$03 ; deux bits poids faible
BEQ ANIM4 ; 0: ne rien faire
CMPA #$01 ; 1:
BEQ ANIMD ; mouvement droite
CMPA #$02 ; 2:
BEQ ANIMG ; mouvement gauche
LBSR STOP ; 3: stop
BRA ANIM2 ; nouveau deplacement
ANIMD
CMPX #$4ED1 ; test limite droite
BGE ANIM2 ; ne pas depasser
BSR AVD ; mouvement droite
BRA ANIM2 ; nouveau deplacement
ANIMG
CMPX #$4EB6 ; test limite gauche
BLE ANIM2 ; ne pas depasser
BSR AVG ; mouvement gauche
BRA ANIM2 ; nouveau deplacement
;===================================================
; AVANCE DROITE
;===================================================
AVD
LDY #CATD1
BSR DRAW
LEAX 1,X
LDY #CATD2
BSR DRAW
LEAX 1,X
LDY #CATD3
BSR DRAW
LEAX 1,X
LDY #CATD4
BSR DRAW
LEAX 1,X
LDY #CATD5
BSR DRAW
LEAX 1,X
LDY #CATD6
BSR DRAW
LEAX 1,X
RTS
;===================================================
; AVANCE GAUCHE
;===================================================
AVG
LDY #CATG1
BSR DRAW
LEAX -1,X
LDY #CATG2
BSR DRAW
LEAX -1,X
LDY #CATG3
BSR DRAW
LEAX -1,X
LDY #CATG4
BSR DRAW
LEAX -1,X
LDY #CATG5
BSR DRAW
LEAX -1,X
LDY #CATG6
BSR DRAW
LEAX -1,X
RTS
;===================================================
; DRAW CAT, TEMPO, ERASE
; Y = adresse du sprite a afficher
; X = adresse d'affichage
;===================================================
DRAW
LDB #$0B ; compteur de lignes 2
DRAW1
LDA ,Y+ ; octet 1 6
STA ,X+ ; affichage 6
LDA ,Y+ ; octet 2 6
STA ,X+ ; affichage 6
LDA ,Y+ ; octet 3 6
STA ,X+ ; affichage 6
LEAX $25,X ; pointeur ligne suivante 5
DECB ; decremente compteur lignes 2
BNE DRAW1 ; nouvelle ligne 3
DRAW2
BSR PLAY ; musique et temporisation
LDB #$A9 ; temporisation 847 cycles
DRAW3
DECB ; compense 333 cycles d'effacement
BNE DRAW3 ; 508 cycles d'affichage et les appels
BSR PLAY
LDB #$A9 ; temporisation 847 cycles
DRAW4
DECB ; compense 333 cycles d'effacement
BNE DRAW4 ; 508 cycles d'affichage et les appels
BSR PLAY
LEAX -$1B8,X ; pointeur premiere ligne 8
LDA #$FF ; octet de fond 2
LDB #$0B ; compteur de lignes 2
DRAW5
STA ,X+ ; effacement octet 1 6
STA ,X+ ; effacement octet 2 6
STA ,X+ ; effacement octet 3 6
LEAX $25,X ; pointeur ligne suivante 5
DECB ; decremente compteur lignes 2
BNE DRAW5 ; nouvelle ligne 3
LEAX -$1B8,X ; pointeur premiere ligne 8
RTS ; retour 5
;===================================================
; STOP
;===================================================
STOP
LDY #CATF1
BSR DRAW
LDY #CATF2
BSR DRAW
LDY #CATF1
BSR DRAW
LDY #CATF2
BSR DRAW
LDY #CATF1
BSR DRAW
LDY #CATF2
BSR DRAW
LDY #CATF1
BSR DRAW
LDY #CATF3
BSR DRAW
RTS
;===================================================
; PLAY
; Joue la musique entre deux mouvements du chat
;===================================================
PLAY
CMPU #FMUSIC ; test fin de la musique
BNE PLAY1 ; sinon jouer la note
LDU #MUSIC ; reinitialiser pointeur musique
PLAY1
LDY #NOTES ; Y pointe vers les periodes des notes
LDA ,U+ ; A est le code de la note
LDA A,Y ; A est la periode de la note
LDY #$0000 ; compteur pour la duree de la note
; incremente de 1 pour 25 cycles
PLAY2
LDB $E7C1 ; adresse du buzzer
PLAY3
CMPA #$00 ; periode 0 = silence 2
BEQ PLAY8 ; jouer un silence 3
PLAY4
ANDB #$F7 ; raz bit buzzer 2
PLAY5
; buzzer a l'etat bas pendant : 50 + A * 25
; Y est incremente de 2 pour compenser les 50 cycles supplementaires
STB $E7C1 ; buzzer a l'etat bas 5
BSR WAIT ; attendre la fin de periode 21+A*25
BSR TEMPO ; temporisation 12
LEAY 1,Y ; incrementer duree 5
LEAY 1,Y ; incrementer duree 5
PLAY6
ORB #$08 ; set bit buzzer 2
PLAY7
; buzzer a l'etat haut pendant : 49 + A * 25
; Y est incremente de 2 pour compenser les 49 cycles supplementaires
STB $E7C1 ; buzzer a l'etat haut 5
BSR WAIT ; attendre la fin de periode 21+A*25
BRA PLAY9 ; tester la duree 3
PLAY8
; buzzer inchange pendant 50 cycles
; Y est incremente de 2 pour compenser les 50 cycles
BSR TEMPO ; temporisation 12
BSR TEMPO ; pour un total 12
NOP ; de 50 cycles 2
NOP ; .... 2
NOP ; .... 2
NOP ; .... 2
PLAY9
LEAY 2,Y ; incrementer duree 5
CMPY #$0900 ; duree ecoulee ? 5
BLS PLAY3 ; sinon nouvelle periode 3
RTS ; retour 5
;===================================================
; WAIT (A est la periode de la note)
; Duree = 7 (BSR) + 6 (PSHS) + A * 25 + 8 (Retour)
; = 21 + A * 25
;===================================================
WAIT
PSHS A ; 6
WAIT1
BSR TEMPO ; 12
BRN WAIT ; 3
LEAY 1,Y ; 5
DECA ; 2
BNE WAIT1 ; 3
PULS A,PC ; 8
;===================================================
; TEMPORISATION
;===================================================
TEMPO
RTS ; 5
;===================================================
; AFFICHAGE SIGLE
;===================================================
SIGLE
PSHS X ; empilage X
SIGLE1
LDX #$5D4C ; pointeur premiere ligne
LDB #$0C ; nombre de lignes a afficher
PSHS B ; empilage compteur lignes
SIGLE2
LDB #$0A ; compteur de colonnes
SIGLE3
LDA ,Y+ ; octet a afficher
STA ,X+ ; affichage
DECB ; decremente compteur colonnes
BNE SIGLE3 ; nouvelle colonne
LEAX $1E,X ; pointeur ligne suivante
DEC ,S ; decremente compteur lignes
BNE SIGLE2 ; nouvelle ligne
PULS X,B,PC ; depilage et retour
;===================================================
; RLE DECODE
; Si plusieurs octets successifs sont identiques
: l'octet apparait deux fois à la suite et l'octet
; suivant est le nombre de répétitions du precedent
; Ex: $10,$10,$05 l'octet $10 est repete six fois
;===================================================
RLE
LDX #$4000 ; debut VRAM
RLE1
LDA ,Y+ ; lecture octet
STA ,X+ ; copie en VRAM
RLE2
CMPX #$5F40 ; fin ecran
BEQ RLE9 ; retour
CMPA ,Y ; test octet suivant
BNE RLE1 ; si different nouvelle boucle
LEAY 1,Y ; si identique pointer octet suivant
LDB ,Y+ ; nombre de repetitions
RLE3
STA ,X+ ; copie en VRAM
RLE4
CMPX #$5F40 ; fin ecran
BEQ RLE9 ; retour
DECB ; decrementation compteur
BNE RLE3 ; nouvelle repetition
BRA RLE1 ; nouvelle boucle
RLE9
RTS ; retour
;===================================================
; VARIABLE POUR COMPTER LES DEPLACEMENT DU CHAT
;===================================================
COMPTE
FCB $00 ; compteur de mouvements
;===================================================
; SPRITES
;===================================================
CATD1
FCB $9f,$ff,$bf,$6f,$ff,$0f,$3f,$ff,$17,$be,$1e
FCB $03,$8c,$02,$07,$c0,$00,$0f,$e0,$00,$1f,$e4
FCB $20,$9f,$ce,$79,$cf,$ce,$79,$f7,$ef,$3c,$ff
CATD2
FCB $DF,$FF,$FF,$3F,$FF,$EF,$7F,$FF,$C3,$3F,$C1
FCB $85,$8E,$00,$00,$C0,$00,$01,$F0,$08,$03,$F8
FCB $3F,$0F,$F2,$7F,$27,$F2,$7E,$67,$F9,$3F,$F3
CATD3
FCB $FF,$FF,$FF,$FF,$FF,$EF,$9F,$FF,$C3,$4F,$83
FCB $85,$EC,$00,$00,$E0,$00,$01,$F0,$00,$03,$FC
FCB $0C,$1F,$F9,$1E,$1F,$F9,$3E,$5F,$FD,$BF,$5F
CATD4
FCB $FF,$FF,$FF,$7F,$FF,$EF,$1F,$FF,$C3,$CF,$E1
FCB $85,$E6,$00,$00,$F0,$00,$01,$F0,$00,$03,$FC
FCB $00,$1F,$FE,$1E,$3F,$FE,$7E,$7F,$FF,$3F,$3F
CATD5
FCB $FF,$FF,$DF,$8F,$FF,$87,$27,$FF,$0B,$F3,$07
FCB $01,$F0,$00,$03,$F8,$00,$07,$F8,$00,$0F,$F8
FCB $04,$1F,$F1,$1E,$4F,$F3,$9E,$6F,$FB,$DE,$F7
CATD6
FCB $3F,$FF,$7F,$DF,$FE,$1F,$9F,$FC,$2F,$38,$1C
FCB $07,$80,$00,$0F,$C0,$00,$1F,$F0,$00,$3F,$E4
FCB $20,$7F,$C6,$72,$3F,$CE,$73,$3F,$9F,$27,$BF
CATG1
FCB $F7,$FF,$E7,$C3,$FF,$DB,$A3,$FF,$F3,$01,$E1
FCB $F7,$81,$00,$C7,$C0,$00,$0F,$E0,$00,$1F,$E4
FCB $10,$9F,$CE,$79,$CF,$BE,$79,$CF,$FC,$F3,$DF
CATG2
FCB $FF,$FF,$FB,$F7,$FF,$FC,$C3,$FF,$FE,$A1,$83
FCB $FC,$00,$00,$71,$80,$00,$03,$C0,$10,$0F,$F0
FCB $FC,$1F,$E4,$FE,$4F,$E6,$7E,$4F,$CF,$FC,$9F
CATG3
FCB $FF,$FF,$FF,$F7,$FF,$FF,$C3,$FF,$F9,$A1,$C1
FCB $F2,$00,$00,$37,$80,$00,$07,$C0,$00,$0F,$F8
FCB $30,$3F,$F8,$78,$9F,$FA,$7C,$9F,$FA,$FD,$BF
CATG4
FCB $FF,$FF,$FF,$F7,$FF,$FE,$C3,$FF,$F8,$A1,$87
FCB $F3,$00,$00,$67,$80,$00,$0F,$C0,$00,$0F,$F8
FCB $00,$3F,$FC,$78,$7F,$FE,$7E,$7F,$FC,$FC,$FF
CATG5
FCB $F7,$FF,$FF,$C3,$FF,$E3,$A1,$FF,$C9,$01,$C1
FCB $9F,$80,$00,$1F,$C0,$00,$3F,$E0,$00,$3F,$F0
FCB $40,$3F,$E4,$F1,$1F,$EC,$F3,$9F,$DE,$F7,$BF
CATG6
FCB $FB,$FF,$F3,$E1,$FF,$EF,$D0,$FF,$E7,$80,$E0
FCB $73,$C0,$00,$07,$E0,$00,$0F,$F0,$00,$3F,$F8
FCB $10,$9F,$F1,$39,$8F,$F3,$39,$CF,$F7,$93,$E7
CATF1
FCB $FC,$EF,$FF,$FC,$0F,$FF,$F9,$17,$FF
FCB $F0,$03,$FF,$F8,$07,$FF,$FE,$1F,$FF
CATB1
FCB $9C,$1F,$FF,$38,$0F,$FF,$80,$07,$FF
FCB $E0,$07,$FF,$F0,$07,$FF,$E2,$13,$FF
CATF2
FCB $FD,$CF,$FF,$FC,$0F,$FF,$FA,$27,$FF
FCB $F0,$03,$FF,$F8,$07,$FF,$FE,$1F,$FF
CATB2
FCB $FC,$1F,$FF,$38,$0F,$FF,$90,$07,$FF
FCB $E0,$07,$FF,$F0,$07,$FF,$E2,$13,$FF
CATF3
FCB $FC,$CF,$FF,$FC,$0F,$FF,$F8,$07,$FF
FCB $F0,$03,$FF,$F8,$07,$FF,$FE,$1F,$FF
CATB3
FCB $FC,$1F,$FF,$88,$0F,$FF,$20,$07,$FF
FCB $E0,$07,$FF,$F0,$07,$FF,$E2,$13,$FF
IBM
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
FCB $87,$03,$39,$FF,$C3,$FF,$FF,$FF,$FF,$FF
FCB $CF,$99,$11,$FF,$99,$FF,$FF,$FF,$FF,$FF
FCB $CF,$99,$01,$FF,$3F,$87,$23,$23,$FF,$FF
FCB $CF,$83,$01,$FF,$3F,$33,$89,$99,$FF,$FF
FCB $CF,$99,$29,$FF,$3F,$33,$99,$99,$FF,$FF
FCB $CF,$99,$39,$FF,$99,$33,$9F,$83,$CF,$FF
FCB $87,$03,$39,$FF,$C3,$87,$0F,$9F,$CF,$FF
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$0F,$FF,$FF
SYNSOFT
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$03,$1C,$7F
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF,$00,$7F
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF,$22,$7F
FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$CF,$36,$7F
FCB $87,$FF,$FF,$87,$FF,$C7,$DF,$CF,$3E,$7F
FCB $33,$FF,$FF,$33,$FF,$93,$CF,$FF,$FF,$FF
FCB $1F,$33,$07,$1F,$87,$9F,$83,$FF,$FF,$FF
FCB $8F,$33,$33,$8F,$33,$0F,$CF,$FF,$FF,$FF
FCB $e7,$33,$33,$e7,$33,$9F,$CF,$FF,$FF,$FF
FCB $33,$83,$33,$33,$33,$9F,$CB,$FF,$FF,$FF
FCB $87,$F3,$33,$87,$87,$0F,$E7,$FF,$FF,$FF
FCB $FF,$07,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
;===================================================
; NOTES (periodes calculees pour la version Thomson)
;===================================================
NOTES
FCB $00,$0B,$0C,$0D,$0E,$0F,$10,$11,$12,$13,$15,$16
FCB $18,$19,$1B,$1C,$1E,$20,$22,$24,$27,$29,$2B,$2E
FCB $31,$34,$37,$3B,$3E,$42,$46,$4A,$4F,$54,$59,$5E
FCB $64,$6A,$71,$77,$7F,$86,$8E,$97,$A0,$AA,$B4,$BF
FCB $CA,$D6,$E3,$F1,$FF
;===================================================
; MUSIC
;===================================================
MUSIC
FCB $00,$00,$00,$00,$00,$00,$2c,$00,$00,$00,$00,$00
FCB $2c,$00,$00,$00,$00,$00,$2d,$00,$00,$00,$00,$00
FCB $2d,$00,$00,$00,$00,$00,$2f,$00,$00,$00,$2d,$00
FCB $2f,$00,$00,$00,$31,$00,$00,$00,$00,$00,$31,$00
FCB $31,$00,$2f,$00,$2d,$00,$00,$00,$00,$00,$00,$00
FCB $2c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
FCB $2d,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
FCB $2f,$00,$00,$00,$31,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00
FCB $20,$00,$00,$00,$21,$20,$21,$00,$00,$00,$00,$00
FCB $21,$00,$00,$00,$23,$21,$23,$00,$00,$00,$21,$00
FCB $23,$00,$00,$00,$25,$00,$00,$00,$00,$00,$25,$00
FCB $25,$00,$23,$00,$21,$00,$00,$00,$00,$00,$00,$00
FCB $20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$21,$00
FCB $21,$00,$00,$00,$00,$00,$00,$00,$00,$00,$26,$25
FCB $23,$00,$00,$00,$25,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$18,$17,$16,$15,$14,$00,$00,$00,$00,$00
FCB $14,$00,$00,$00,$15,$14,$15,$00,$00,$00,$15,$14
FCB $15,$00,$00,$00,$17,$15,$17,$00,$00,$00,$15,$00
FCB $17,$15,$17,$00,$19,$00,$00,$00,$00,$00,$19,$00
FCB $19,$00,$17,$00,$15,$00,$00,$00,$00,$00,$00,$00
FCB $14,$15,$14,$15,$14,$00,$00,$00,$00,$00,$15,$00
FCB $15,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1a,$19
FCB $17,$00,$00,$00,$19,$00,$00,$00,$00,$00,$00,$19
FCB $1a,$1b,$1c,$1d,$1e,$1f,$20,$00,$00,$00,$00,$00
FCB $14,$00,$00,$00,$21,$20,$21,$00,$00,$00,$00,$00
FCB $15,$00,$00,$00,$23,$21,$23,$00,$00,$00,$21,$00
FCB $00,$00,$23,$21,$23,$00,$25,$00,$00,$00,$00,$00
FCB $0d,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$00
FCB $20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$15,$00
FCB $15,$14,$15,$14,$15,$14,$13,$12,$11,$10,$0f,$02
FCB $0b,$00,$00,$00,$0d,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$20,$00,$19,$00,$00,$00
FCB $20,$00,$1c,$00,$00,$00,$21,$20,$21,$00,$1e,$00
FCB $21,$00,$00,$00,$00,$00,$23,$20,$23,$20,$21,$00
FCB $23,$00,$00,$00,$25,$21,$25,$21,$00,$00,$25,$00
FCB $25,$00,$23,$00,$21,$00,$00,$00,$00,$00,$00,$00
FCB $20,$00,$19,$00,$20,$00,$19,$00,$00,$00,$00,$00
FCB $15,$21,$15,$21,$15,$21,$14,$00,$00,$00,$00,$00
FCB $23,$00,$00,$00,$25,$15,$25,$15,$25,$15,$25,$15
FCB $25,$15,$25,$15,$25,$15,$20,$00,$0d,$00,$00,$00
FCB $20,$00,$10,$00,$00,$00,$21,$20,$21,$00,$00,$00
FCB $12,$00,$21,$00,$00,$00,$23,$14,$23,$14,$21,$12
FCB $21,$12,$23,$14,$23,$14,$25,$15,$25,$15,$25,$15
FCB $25,$21,$1e,$21,$25,$21,$1e,$19,$1e,$21,$1e,$19
FCB $20,$00,$0d,$00,$00,$00,$0d,$00,$0d,$09,$0d,$09
FCB $21,$00,$00,$00,$00,$00,$21,$00,$00,$00,$00,$00
FCB $23,$00,$00,$00,$00,$00,$07,$00,$23,$00,$25,$06
FCB $25,$06,$25,$06,$25,$06,$24,$05,$23,$04,$22,$03
FCB $2c,$10,$00,$00,$0d,$00,$2c,$10,$00,$00,$0d,$00
FCB $2d,$12,$00,$00,$0d,$00,$2d,$12,$00,$00,$0d,$00
FCB $2f,$14,$14,$00,$2d,$0d,$2f,$14,$12,$00,$31,$10
FCB $12,$00,$0a,$00,$09,$00,$0d,$00,$0a,$00,$09,$00
FCB $0d,$00,$00,$00,$01,$00,$2c,$04,$00,$00,$0d,$00
FCB $0d,$00,$00,$00,$01,$00,$2d,$06,$00,$00,$0d,$00
FCB $01,$00,$02,$00,$04,$00,$2f,$02,$04,$00,$31,$09
FCB $21,$00,$22,$00,$21,$00,$22,$00,$25,$00,$2c,$0a
FCB $0b,$00,$0d,$00,$0b,$00,$0a,$00,$0b,$00,$0d,$00
FCB $0f,$00,$12,$00,$13,$00,$14,$00,$16,$00,$14,$00
FCB $2f,$12,$11,$00,$2d,$10,$0d,$00,$2f,$0b,$09,$00
FCB $31,$00,$25,$00,$25,$00,$25,$00,$25,$00,$2c,$05
FCB $04,$00,$01,$00,$2c,$05,$04,$00,$01,$00,$2d,$06
FCB $01,$00,$03,$00,$06,$00,$07,$00,$0d,$00,$0a,$00
FCB $0b,$00,$0d,$00,$2f,$0f,$13,$00,$14,$00,$31,$15
FCB $31,$25,$2e,$22,$31,$25,$2e,$22,$2d,$21,$2c,$20
FCB $28,$1c,$25,$19,$1c,$10,$19,$0d,$15,$09,$2d,$21
FCB $2a,$1e,$26,$1a,$1e,$12,$1a,$0e,$17,$0b,$2f,$23
FCB $2b,$1f,$28,$1c,$31,$2d,$2a,$27,$25,$21,$1e,$1b
FCB $19,$15,$12,$0f,$0d,$09,$06,$03,$01,$02,$01,$02
FCB $01,$02,$01,$02,$01,$02,$01,$02,$01,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$00,$00
FMUSIC
;===================================================
; ECRAN DE PRESENTATION (ENCODAGE RLE)
; Si plusieurs octets successifs sont identiques
: l'octet est ecrit deux fois a la suite et l'octet
; suivant est le nombre de repetitions du precedent
; Ex: $10,$10,$05 l'octet $10 est repete six fois
;===================================================
VRAM0
FCB $00,$00,$FF,$00,$00,$FF,$00,$00,$FF,$00
FCB $00,$F6,$40,$10,$01,$00,$40,$40,$01,$10
FCB $10,$03,$00,$00,$45,$40,$10,$01,$00,$40
FCB $40,$01,$10,$10,$03,$00,$00,$45,$40,$10
FCB $01,$00,$10,$40,$10,$10,$02,$04,$00,$00
FCB $45,$40,$10,$01,$00,$10,$40,$10,$00,$10
FCB $04,$00,$00,$FF,$00,$00,$FF,$00,$00,$46
FCB $F8,$1C,$0E,$00,$00,$03,$78,$00,$0E,$00
FCB $00,$1C,$01,$8C,$36,$1B,$00,$00,$02,$01
FCB $EC,$00,$1B,$70,$00,$00,$1B,$03,$0E,$63
FCB $31,$80,$00,$00,$01,$03,$86,$00,$33,$C0
FCB $00,$00,$1B,$06,$06,$01,$63,$31,$80,$00
FCB $00,$01,$03,$00,$00,$01,$3F,$80,$00,$00
FCB $1B,$06,$06,$01,$63,$31,$80,$00,$00,$01
FCB $07,$00,$00,$01,$F1,$80,$00,$00,$1B,$0C
FCB $06,$63,$31,$8E,$00,$00,$01,$06,$00,$01
FCB $B1,$80,$00,$00,$1B,$0C,$06,$36,$1B,$1B
FCB $01,$0C,$18,$06,$00,$1C,$1B,$00,$00,$1C
FCB $0C,$06,$36,$1B,$11,$1E,$18,$07,$00,$36
FCB $1B,$00,$00,$1C,$06,$06,$01,$1C,$0E,$1B
FCB $1B,$01,$38,$03,$00,$62,$0E,$00,$00,$1C
FCB $06,$0E,$3C,$1E,$0E,$1B,$38,$03,$86,$62
FCB $1E,$20,$00,$00,$1B,$03,$9E,$6E,$37,$1B
FCB $39,$FB,$01,$EC,$37,$37,$01,$60,$00,$00
FCB $1C,$F3,$C3,$E1,$F1,$F1,$01,$DE,$00,$78
FCB $1D,$E1,$C0,$00,$00,$21,$78,$00,$00,$25
FCB $03,$F0,$00,$00,$25,$06,$30,$00,$00,$25
FCB $06,$60,$00,$00,$25,$03,$C0,$00,$00,$FF
FCB $00,$00,$FF,$00,$00,$FF,$00,$00,$FF,$00
FCB $00,$FF,$00,$00,$FF,$00,$00,$AB,$30,$00
FCB $00,$02,$30,$00,$30,$00,$00,$01,$30,$00
FCB $30,$00,$00,$02,$30,$00,$30,$00,$30,$00
FCB $00,$02,$30,$00,$30,$00,$00,$01,$30,$00
FCB $00,$02,$30,$00,$00,$01,$30,$00,$00,$03
FCB $F0,$00,$00,$02,$F0,$00,$F0,$00,$00,$01
FCB $F0,$00,$F0,$00,$00,$02,$F0,$00,$F0,$00
FCB $F0,$00,$00,$02,$F0,$00,$F0,$00,$00,$01
FCB $F0,$00,$00,$02,$F0,$00,$00,$01,$F0,$00
FCB $00,$01,$30,$0E,$F0,$30,$0E,$00,$F0,$0E
FCB $F0,$30,$0E,$F0,$0E,$F0,$20,$0E,$00,$F0
FCB $0E,$F0,$0E,$F0,$30,$0E,$00,$F0,$0E,$F0
FCB $30,$0E,$F0,$30,$0E,$00,$F0,$30,$0E,$F0
FCB $30,$0E,$3E,$CE,$FC,$3E,$CE,$00,$FC,$CE
FCB $FC,$3E,$CE,$FC,$CE,$FC,$3E,$CE,$00,$FC
FCB $CE,$FC,$CE,$FC,$3E,$CE,$00,$FC,$CE,$FC
FCB $3E,$CE,$FC,$3E,$CE,$00,$FC,$3E,$CE,$FC
FCB $3E,$CE,$3E,$FE,$FC,$3E,$FE,$C0,$FC,$FE
FCB $FC,$3E,$FE,$FC,$FE,$FC,$3E,$FE,$C0,$FC
FCB $FE,$FC,$FE,$FC,$3E,$FE,$C0,$FC,$FE,$FC
FCB $3E,$FE,$FC,$3E,$FE,$C0,$FC,$3E,$FE,$FC
FCB $3E,$FE,$FE,$02,$FC,$FE,$FE,$01,$F0,$FC
FCB $FE,$FC,$FE,$FE,$01,$FC,$FE,$FC,$FE,$FE
FCB $01,$F0,$FC,$FE,$FC,$FE,$FC,$FE,$FE,$01
FCB $F0,$FC,$FE,$FC,$FE,$FE,$01,$FC,$FE,$FE
FCB $01,$F0,$FC,$FE,$FE,$01,$FC,$FE,$FE,$06
FCB $F8,$FE,$FE,$09,$F8,$FE,$FE,$06,$F8,$FE
FCB $FE,$07,$F8,$FE,$FE,$09,$F2,$FE,$FE,$0E
FCB $C0,$FE,$FE,$0C,$8E,$E6,$C0,$FE,$FE,$06
FCB $E6,$FE,$FE,$0E,$86,$FE,$FE,$0C,$26,$C2
FCB $86,$FE,$FE,$06,$E6,$FE,$FE,$0E,$A6,$FE
FCB $FE,$0C,$3E,$9A,$A6,$FE,$FE,$06,$CE,$FE
FCB $FE,$0E,$E6,$FE,$FE,$0C,$3E,$82,$E6,$FE
FCB $FE,$05,$C2,$FE,$FE,$0F,$F2,$F2,$01,$FE
FCB $FE,$09,$86,$FE,$16,$32,$F2,$FE,$FE,$05
FCB $02,$9E,$FE,$FE,$0E,$F2,$32,$FE,$FE,$09
FCB $02,$FE,$86,$26,$F2,$FE,$FE,$05,$0E,$9E
FCB $FE,$FE,$0E,$F2,$32,$FE,$FE,$09,$30,$FE
FCB $CE,$E6,$F2,$FE,$FE,$05,$E6,$FE,$FE,$10
FCB $22,$FE,$FE,$09,$00,$FE,$FE,$08,$F2,$E6
FCB $FE,$8E,$8E,$02,$FE,$8E,$8E,$03,$FE,$FE
FCB $04,$3E,$FE,$FE,$01,$00,$FE,$FE,$09,$88
FCB $FE,$3E,$FE,$FE,$06,$32,$F0,$FE,$26,$26
FCB $02,$FE,$26,$26,$03,$FE,$FE,$04,$0E,$FE
FCB $FE,$01,$88,$FE,$FE,$09,$F8,$FE,$0E,$FE
FCB $FE,$06,$32,$C0,$FE,$36,$36,$02,$FE,$36
FCB $36,$03,$FE,$FE,$04,$0E,$FE,$FE,$01,$98
FCB $FE,$FE,$09,$E2,$FE,$0E,$FE,$FE,$06,$22
FCB $C6,$FE,$32,$32,$02,$9E,$32,$32,$03,$FE
FCB $FE,$04,$0E,$FE,$FE,$01,$9E,$FE,$FE,$09
FCB $E6,$FE,$0E,$FE,$FE,$06,$00,$00,$01,$FE
FCB $98,$98,$02,$C6,$98,$98,$03,$FE,$FE,$04
FCB $3E,$FE,$FE,$02,$86,$FE,$FE,$0A,$3E,$FE
FCB $FE,$06,$88,$02,$FE,$98,$98,$02,$FE,$98
FCB $98,$03,$FE,$FE,$08,$0E,$FE,$FE,$12,$98
FCB $CE,$FE,$C0,$C0,$02,$FE,$C0,$C0,$03,$FE
FCB $FE,$08,$3E,$FE,$FE,$03,$C2,$FE,$FE,$0D
FCB $9E,$FE,$FE,$01,$E2,$E2,$02,$FE,$E2,$E2
FCB $03,$FE,$FE,$08,$36,$FE,$FE,$01,$F0,$F0
FCB $01,$00,$FE,$FE,$0B,$3E,$FE,$FE,$07,$0E
FCB $FE,$FE,$04,$3E,$FE,$FE,$05,$8E,$FE,$FE
FCB $01,$C0,$C0,$01,$00,$FE,$FE,$01,$8E,$8E
FCB $02,$FE,$8E,$8E,$03,$FE,$FE,$01,$0E,$FE
FCB $FE,$07,$0E,$FE,$FE,$04,$3E,$FE,$FE,$05
FCB $9A,$FE,$FE,$03,$02,$FE,$FE,$01,$26,$26
FCB $02,$FE,$26,$26,$03,$FE,$FE,$01,$0E,$FE
FCB $FE,$07,$3E,$FE,$FE,$04,$3E,$FE,$FE,$05
FCB $82,$FE,$FE,$01,$F0,$F0,$01,$CE,$FE,$FE
FCB $01,$36,$36,$02,$FE,$36,$36,$03,$FE,$FE
FCB $01,$0E,$FE,$FE,$0D,$1E,$FE,$FE,$05,$86
FCB $FE,$FE,$06,$32,$32,$02,$9E,$32,$32,$03
FCB $FE,$FE,$01,$3E,$FE,$FE,$0D,$9E,$8E,$FE
FCB $C2,$FE,$FE,$03,$98,$FE,$3E,$FE,$FE,$03
FCB $98,$98,$02,$C6,$98,$98,$03,$FE,$FE,$10
FCB $98,$26,$FE,$00,$FE,$FE,$03,$88,$FE,$0E
FCB $FE,$FE,$03,$98,$98,$02,$FE,$98,$98,$03
FCB $FE,$FE,$03,$C2,$FE,$FE,$0B,$80,$36,$FE
FCB $00,$FE,$FE,$03,$00,$FE,$0E,$FE,$FE,$03
FCB $C0,$C0,$02,$FE,$C0,$C0,$03,$FE,$FE,$03
FCB $00,$FE,$FE,$04,$F0,$F0,$01,$FE,$FE,$04
FCB $82,$32,$FE,$02,$F0,$FE,$FE,$02,$24,$FE
FCB $0E,$FE,$FE,$03,$E2,$E2,$02,$FE,$E2,$E2
FCB $03,$FE,$FE,$03,$00,$FE,$FE,$04,$C0,$C0
FCB $01,$FE,$FE,$05,$98,$FE,$CE,$C0,$FE,$FE
FCB $02,$24,$FE,$3E,$FE,$FE,$05,$3E,$FE,$FE
FCB $08,$02,$FE,$FE,$0C,$98,$FE,$FE,$05,$24
FCB $FE,$FE,$11,$CE,$FE,$FE,$04,$F0,$F0,$01
FCB $FE,$FE,$05,$C0,$FE,$FE,$01,$F0,$FE,$FE
FCB $02,$3C,$FE,$FE,$07,$FC,$FE,$3E,$FE,$FE
FCB $14,$E2,$FE,$FE,$05,$3E,$FE,$FE,$09,$0E
FCB $FE,$FE,$15,$38,$FE,$FE,$08,$C2,$FE,$FE
FCB $10,$FC,$3E,$FE,$FE,$01,$FC,$3E,$FE,$FE
FCB $05,$38,$FE,$FE,$08,$00,$FE,$FE,$07,$FC
FCB $3E,$FE,$FE,$06,$FB,$DE,$FE,$FE,$01,$FB
FCB $DE,$FE,$FE,$05,$98,$FE,$FE,$08,$00,$FE
FCB $FE,$07,$FB,$DE,$FE,$FE,$06,$F2,$6E,$FE
FCB $FE,$01,$F2,$6E,$FE,$FE,$05,$92,$FE,$FE
FCB $08,$02,$FE,$FE,$07,$F2,$6E,$FE,$FE,$05
FCB $F0,$05,$AE,$FE,$F0,$05,$AE,$FE,$FE,$05
FCB $92,$86,$FE,$FE,$07,$CE,$3E,$86,$FE,$FE
FCB $04,$F0,$05,$AE,$FE,$FE,$05,$07,$C8,$2E
FCB $FE,$07,$C8,$2E,$FE,$FE,$05,$92,$0E,$FE
FCB $FE,$08,$38,$1E,$FE,$FE,$04,$07,$C8,$2E
FCB $FE,$FE,$04,$F9,$EF,$FB,$A2,$F9,$EF,$FB
FCB $A2,$FE,$FE,$05,$C6,$3E,$FE,$FE,$08,$38
FCB $3E,$FE,$FE,$02,$3E,$F9,$EF,$FB,$A2,$FE
FCB $FE,$02,$F0,$F0,$01,$F6,$01,$FF,$6C,$F6
FCB $01,$FF,$6C,$FE,$FE,$04,$0E,$E6,$36,$FE
FCB $FE,$08,$38,$06,$FE,$FE,$02,$0E,$F6,$01
FCB $FF,$6C,$FE,$FE,$02,$C2,$C0,$EC,$00,$1F
FCB $FF,$EC,$00,$1F,$FF,$7E,$FE,$FE,$05,$8E
FCB $FE,$FE,$07,$8E,$38,$82,$C2,$FE,$FE,$01
FCB $0E,$EC,$00,$1F,$FF,$7E,$FE,$FE,$01,$00
FCB $FE,$E8,$00,$00,$01,$3F,$E8,$00,$00,$01
FCB $3F,$7E,$FE,$FE,$01,$FC,$3E,$FE,$FE,$01
FCB $9A,$FE,$FE,$02,$FC,$3E,$FE,$FE,$02,$26
FCB $92,$F2,$02,$FE,$FE,$01,$0E,$E8,$00,$00
FCB $01,$3F,$7E,$FE,$FE,$01,$00,$F0,$EC,$00
FCB $00,$02,$EC,$00,$00,$02,$FE,$FE,$02,$FB
FCB $DE,$FE,$FE,$01,$82,$FE,$FE,$02,$FB,$DE
FCB $FE,$FE,$02,$36,$82,$22,$0E,$FE,$FE,$01
FCB $3E,$EC,$00,$00,$02,$FE,$FE,$02,$02,$FE
FCB $E6,$00,$00,$01,$32,$E6,$00,$00,$01,$32
FCB $FE,$FE,$02,$F2,$6E,$FE,$FE,$01,$86,$FE
FCB $FE,$02,$F2,$6E,$FE,$FE,$02,$32,$C6,$86
FCB $E6,$FE,$FE,$02,$E6,$00,$00,$01,$32,$FE
FCB $FE,$02,$CE,$FE,$E9,$E0,$03,$CA,$E9,$E0
FCB $03,$CA,$FE,$FE,$01,$F0,$05,$AE,$FE,$FE
FCB $04,$F0,$05,$AE,$FE,$FE,$01,$98,$98,$01
FCB $FE,$FE,$01,$E6,$86,$FE,$FE,$01,$E9,$E0
FCB $03,$CA,$FE,$FE,$04,$EC,$1F,$FC,$1A,$EC
FCB $1F,$FC,$1A,$FE,$FE,$01,$07,$C8,$2E,$FE
FCB $FE,$01,$F0,$FE,$FE,$01,$07,$C8,$2E,$FE
FCB $FE,$01,$88,$98,$FE,$FE,$01,$F0,$0E,$FE
FCB $FE,$01,$EC,$1F,$FC,$1A,$FE,$FE,$04,$EA
FCB $A0,$02,$AA,$EA,$A0,$02,$AA,$FE,$F9,$EF
FCB $FB,$A2,$FE,$FE,$01,$C0,$FE,$F9,$EF,$FB
FCB $A2,$FE,$FE,$01,$00,$C0,$FE,$FE,$01,$C0
FCB $3E,$FE,$FE,$01,$EA,$A0,$02,$AA,$FE,$FE
FCB $04,$ED,$55,$55,$01,$5A,$ED,$55,$55,$01
FCB $5A,$FE,$F6,$01,$FF,$6C,$FE,$FE,$03,$F6
FCB $01,$FF,$6C,$FE,$FE,$01,$24,$E2,$FE,$FE
FCB $01,$C6,$36,$FE,$FE,$01,$ED,$55,$55,$01
FCB $5A,$FE,$FE,$04,$EA,$AA,$AA,$02,$EA,$AA
FCB $AA,$02,$FE,$EC,$00,$1F,$FF,$7E,$FE,$F0
FCB $FE,$EC,$00,$1F,$FF,$7E,$FE,$24,$FE,$FE
FCB $03,$8E,$FE,$FE,$01,$EA,$AA,$AA,$02,$FE
FCB $FE,$04,$E9,$55,$55,$01,$4A,$E9,$55,$55
FCB $01,$4A,$FE,$E8,$00,$00,$01,$3F,$7E,$FE
FCB $FE,$02,$E8,$00,$00,$01,$3F,$7E,$FE,$24
FCB $FE,$FE,$03,$9A,$FE,$FE,$01,$E9,$55,$55
FCB $01,$4A,$FE,$FE,$04,$EC,$AA,$AA,$01,$9A
FCB $EC,$AA,$AA,$01,$9A,$FE,$EC,$00,$00,$02
FCB $FE,$FE,$03,$EC,$00,$00,$02,$FE,$C2,$3C
FCB $FE,$FE,$03,$82,$FE,$FE,$01,$EC,$AA,$AA
FCB $01,$9A,$FE,$FE,$04,$E6,$15,$54,$32,$E6
FCB $15,$54,$32,$FE,$E6,$00,$00,$01,$32,$FE
FCB $FE,$03,$E6,$00,$00,$01,$32,$FE,$00,$3E
FCB $FE,$FE,$03,$86,$FE,$FE,$01,$E6,$15,$54
FCB $32,$FE,$FE,$02,$98,$3E,$E9,$E0,$03,$CA
FCB $E9,$E0,$03,$CA,$FE,$E9,$E0,$03,$CA,$3E
FCB $FE,$FE,$02,$E9,$E0,$03,$CA,$0E,$00,$FE
FCB $FE,$05,$86,$FE,$E9,$E0,$03,$CA,$FE,$FE
FCB $02,$92,$3E,$EC,$1F,$FC,$1A,$EC,$1F,$FC
FCB $1A,$FE,$EC,$1F,$FC,$1A,$FE,$FE,$03,$EC
FCB $1F,$FC,$1A,$0E,$02,$FE,$FE,$05,$1E,$FE
FCB $EC,$1F,$FC,$1A,$FE,$FE,$02,$86,$3E,$EA
FCB $A0,$02,$AA,$EA,$A0,$02,$AA,$FE,$EA,$A0
FCB $02,$AA,$FC,$FE,$FE,$02,$EA,$A0,$02,$AA
FCB $3E,$CE,$FE,$FE,$05,$3E,$FE,$EA,$A0,$02
FCB $AA,$FE,$FE,$02,$8E,$1E,$ED,$55,$55,$01
FCB $5A,$ED,$55,$55,$01,$5A,$FE,$ED,$55,$55
FCB $01,$5A,$FE,$FE,$03,$ED,$55,$55,$01,$5A
FCB $FE,$FE,$07,$06,$FE,$ED,$55,$55,$01,$5A
FCB $FE,$FE,$02,$26,$9E,$EA,$AA,$AA,$02,$EA
FCB $AA,$AA,$02,$FE,$EA,$AA,$AA,$02,$FE,$FE
FCB $03,$EA,$AA,$AA,$02,$FE,$FE,$07,$82,$FE
FCB $EA,$AA,$AA,$02,$FE,$FE,$02,$26,$98,$E9
FCB $55,$55,$01,$4A,$E9,$55,$55,$01,$4A,$FE
FCB $E9,$55,$55,$01,$4A,$FE,$FE,$01,$0E,$0E
FCB $01,$E9,$55,$55,$01,$4A,$FE,$FE,$07,$F2
FCB $FE,$E9,$55,$55,$01,$4A,$FE,$FE,$02,$32
FCB $80,$EC,$AA,$AA,$01,$9A,$EC,$AA,$AA,$01
FCB $9A,$FE,$EC,$AA,$AA,$01,$9A,$FE,$FE,$01
FCB $3E,$3E,$01,$EC,$AA,$AA,$01,$9A,$FE,$FE
FCB $07,$22,$FE,$EC,$AA,$AA,$01,$9A,$FE,$FE
FCB $03,$82,$E6,$15,$54,$32,$E6,$15,$54,$32
FCB $FE,$E6,$15,$54,$32,$FE,$FE,$03,$E6,$15
FCB $54,$32,$FE,$FE,$07,$86,$FE,$E6,$15,$54
FCB $32,$FE,$FE,$04,$E9,$E0,$03,$CA,$E9,$E0
FCB $03,$CA,$FE,$E9,$E0,$03,$CA,$FE,$FE,$01
FCB $FC,$FC,$01,$E9,$E0,$03,$CA,$FE,$FE,$09
FCB $E9,$E0,$03,$CA,$FE,$FE,$04,$EC,$1F,$FC
FCB $1A,$EC,$1F,$FC,$1A,$FE,$EC,$1F,$FC,$1A
FCB $FE,$FE,$03,$EC,$1F,$FC,$1A,$FE,$FE,$09
FCB $EC,$1F,$FC,$1A,$FE,$FE,$04,$EA,$A0,$02
FCB $AA,$EA,$A0,$02,$AA,$FE,$EA,$A0,$02,$AA
FCB $FE,$FE,$03,$EA,$A0,$02,$AA,$FE,$FE,$09
FCB $EA,$A0,$02,$AA,$FE,$FE,$04,$ED,$55,$55
FCB $01,$5A,$ED,$55,$55,$01,$5A,$FE,$ED,$55
FCB $55,$01,$5A,$FE,$FE,$03,$ED,$55,$55,$01
FCB $5A,$CE,$CE,$01,$FE,$FE,$03,$CE,$FE,$FE
FCB $02,$ED,$55,$55,$01,$5A,$FE,$FE,$04,$EA
FCB $AA,$AA,$02,$EA,$AA,$AA,$02,$FE,$EA,$AA
FCB $AA,$02,$FE,$FE,$03,$EA,$AA,$AA,$02,$0E
FCB $0E,$01,$FE,$FE,$03,$0E,$FE,$FE,$02,$EA
FCB $AA,$AA,$02,$FE,$FE,$04,$E9,$55,$55,$01
FCB $4A,$E9,$55,$55,$01,$4A,$FE,$E9,$55,$55
FCB $01,$4A,$FE,$FE,$03,$E9,$55,$55,$01,$4A
FCB $0E,$0E,$01,$FE,$FE,$03,$0E,$FE,$FE,$02
FCB $E9,$55,$55,$01,$4A,$FE,$FE,$04,$EC,$AA
FCB $AA,$01,$9A,$EC,$AA,$AA,$01,$9A,$FE,$EC
FCB $AA,$AA,$01,$9A,$FE,$FE,$03,$EC,$AA,$AA
FCB $01,$9A,$00,$00,$01,$FE,$FE,$03,$00,$FE
FCB $FE,$02,$EC,$AA,$AA,$01,$9A,$FE,$FE,$04
FCB $E6,$15,$54,$32,$E6,$15,$54,$32,$FE,$E6
FCB $15,$54,$32,$FE,$FE,$03,$E6,$15,$54,$32
FCB $00,$00,$01,$FE,$FE,$03,$00,$FE,$FE,$02
FCB $E6,$15,$54,$32,$FE,$FE,$01,$00,$00,$02
FCB $09,$E0,$03,$C8,$09,$E0,$03,$C8,$00,$09
FCB $E0,$03,$C8,$00,$00,$03,$09,$E0,$03,$C8
FCB $00,$00,$09,$09,$E0,$03,$C8,$00,$00,$04
FCB $0C,$1F,$FC,$18,$0C,$1F,$FC,$18,$00,$0C
FCB $1F,$FC,$18,$00,$00,$03,$0C,$1F,$FC,$18
FCB $00,$00,$09,$0C,$1F,$FC,$18,$00,$00,$04
FCB $0A,$A0,$02,$A8,$0A,$A0,$02,$A8,$00,$0A
FCB $A0,$02,$A8,$00,$00,$03,$0A,$A0,$02,$A8
FCB $00,$00,$09,$0A,$A0,$02,$A8,$00,$00,$04
FCB $0D,$55,$55,$01,$58,$0D,$55,$55,$01,$58
FCB $00,$0D,$55,$55,$01,$58,$00,$00,$03,$0D
FCB $55,$55,$01,$58,$00,$00,$09,$0D,$55,$55
FCB $01,$58,$00,$00,$04,$0A,$AA,$AA,$01,$A8
FCB $0A,$AA,$AA,$01,$A8,$00,$0A,$AA,$AA,$01
FCB $A8,$00,$00,$03,$0A,$AA,$AA,$01,$A8,$00
FCB $00,$09,$0A,$AA,$AA,$01,$A8,$00,$00,$04
FCB $0D,$55,$55,$01,$58,$0D,$55,$55,$01,$58
FCB $00,$0D,$55,$55,$01,$58,$00,$00,$03,$0D
FCB $55,$55,$01,$58,$00,$00,$09,$0D,$55,$55
FCB $01,$58,$00,$00,$04,$0E,$AA,$AA,$01,$B8
FCB $0E,$AA,$AA,$01,$B8,$00,$0E,$AA,$AA,$01
FCB $B8,$00,$00,$03,$0E,$AA,$AA,$01,$B8,$00
FCB $00,$09,$0E,$AA,$AA,$01,$B8,$00,$00,$04
FCB $01,$55,$55,$01,$70,$01,$55,$55,$01,$70
FCB $00,$01,$55,$55,$01,$70,$00,$00,$03,$01
FCB $55,$55,$01,$70,$00,$00,$09,$01,$55,$55
FCB $01,$70,$00,$00,$04,$01,$EA,$AB,$C0,$01
FCB $EA,$AB,$C0,$00,$01,$EA,$AB,$C0,$00,$00
FCB $03,$01,$EA,$AB,$C0,$00,$00,$09,$01,$EA
FCB $AB,$C0,$00,$00,$05,$1F,$FC,$00,$00,$01
FCB $1F,$FC,$00,$00,$02,$1F,$FC,$00,$00,$05
FCB $1F,$FC,$00,$00,$0B,$1F,$FC,$00,$00,$FF
FCB $00,$00,$FF,$00,$00,$32,$00,$00,$00,$00
VRAM1
FCB $FF,$FF,$AF,$F0,$00,$F0,$00,$FC,$0F,$F8
FCB $0F,$FF,$FF,$47,$F0,$00,$F0,$00,$3C,$03
FCB $F0,$0F,$FF,$FF,$48,$0F,$FC,$38,$3F,$01
FCB $E0,$3F,$FF,$FF,$48,$0F,$FC,$00,$FF,$00
FCB $C0,$3F,$FF,$FF,$48,$0F,$FC,$00,$FF,$0C
FCB $0C,$01,$3F,$FF,$FF,$48,$0F,$FC,$38,$3F
FCB $0E,$1C,$3F,$FF,$FF,$47,$F0,$00,$F0,$00
FCB $3C,$0F,$3C,$0F,$FF,$FF,$47,$F0,$00,$F0
FCB $00,$FC,$0F,$FC,$0F,$FF,$FF,$E6,$01,$C0
FCB $7C,$07,$03,$01,$C3,$C7,$00,$C0,$FF,$FF
FCB $1D,$0C,$C3,$3C,$3F,$0B,$0F,$C1,$C7,$42
FCB $C2,$FF,$FF,$1D,$0C,$C3,$3C,$3F,$0F,$0F
FCB $01,$C1,$C7,$C3,$C3,$01,$FF,$FF,$1D,$0C
FCB $C3,$3C,$3F,$0F,$0F,$01,$C0,$C7,$C3,$C3
FCB $01,$FF,$FF,$1D,$01,$C0,$7C,$0F,$03,$03
FCB $01,$C0,$C7,$C3,$C0,$FF,$FF,$1D,$0F,$C2
FCB $7C,$3F,$C3,$0F,$C2,$47,$C3,$F0,$FF,$FF
FCB $1D,$0F,$C2,$3C,$3F,$C3,$0F,$C2,$47,$C3
FCB $F0,$FF,$FF,$1D,$0F,$C3,$1C,$3F,$43,$0F
FCB $C3,$07,$C3,$D0,$FF,$FF,$1D,$0F,$C3,$9C
FCB $07,$03,$01,$C3,$07,$C3,$C0,$FF,$FF,$FF
FCB $FF,$FF,$88,$F8,$18,$E3,$FF,$FF,$24,$FE
FCB $78,$03,$FF,$FF,$24,$FE,$79,$13,$FF,$FF
FCB $1A,$07,$E3,$F1,$FF,$FF,$03,$87,$FF,$F1
FCB $FE,$79,$B3,$FF,$FF,$19,$FE,$FB,$DD,$EE
FCB $FF,$FF,$02,$FE,$7B,$FF,$EE,$8E,$79,$F3
FCB $FF,$FF,$19,$FD,$8D,$B6,$DB,$7F,$FF,$FF
FCB $01,$FD,$ED,$FF,$DB,$77,$FF,$FF,$1B,$FB
FCB $6E,$6B,$35,$BF,$FF,$FF,$01,$FB,$96,$FF
FCB $B3,$CF,$FF,$FF,$1B,$F6,$F6,$01,$6B,$35
FCB $BF,$FF,$FF,$01,$FB,$79,$FF,$3F,$BF,$FF
FCB $FF,$1B,$F6,$F6,$01,$6B,$35,$B1,$FF,$FF
FCB $01,$F7,$7F,$FE,$F5,$BF,$FF,$FF,$1B,$ED
FCB $F6,$6B,$35,$AE,$F3,$E7,$F6,$FF,$E1,$B5
FCB $BF,$FF,$FF,$1B,$ED,$F6,$B6,$DB,$5B,$6D
FCB $DB,$F6,$FF,$DC,$5B,$7F,$FF,$FF,$1B,$ED
FCB $F6,$B6,$DB,$55,$5E,$DB,$F7,$7F,$36,$DB
FCB $7F,$FF,$FF,$1B,$F6,$F6,$01,$DD,$EE,$DB
FCB $5B,$3B,$FB,$79,$6A,$EE,$DF,$FF,$FF,$1B
FCB $F6,$6E,$BD,$DE,$EE,$DB,$38,$FB,$96,$6A
FCB $DE,$AF,$FF,$FF,$1B,$FB,$9E,$6E,$37,$1B
FCB $39,$FB,$7D,$ED,$B7,$37,$6F,$FF,$FF,$1B
FCB $FC,$F3,$D3,$E9,$F5,$F5,$01,$DE,$FE,$7B
FCB $DD,$E9,$DF,$FF,$FF,$1C,$0C,$3C,$1E,$0E
FCB $0C,$79,$FF,$87,$E2,$1E,$3F,$FF,$FF,$20
FCB $FB,$F7,$FF,$FF,$25,$F6,$37,$FF,$FF,$25
FCB $F6,$6F,$FF,$FF,$25,$FB,$DF,$FF,$FF,$25
FCB $FC,$3F,$FF,$FF,$7D,$E0,$FF,$FF,$26,$86
FCB $7F,$FF,$FF,$25,$26,$7F,$FF,$FF,$25,$E0
FCB $FF,$FF,$26,$CE,$67,$3F,$FF,$FF,$24,$CE
FCB $47,$3F,$FF,$FF,$24,$CC,$92,$27,$FF,$FF
FCB $24,$C1,$F0,$8F,$FF,$FF,$25,$FC,$3F,$FF
FCB $FF,$25,$F9,$3F,$FF,$FF,$25,$F2,$7F,$FF
FCB $FF,$25,$F8,$FF,$FF,$75,$E0,$FF,$C7,$C7
FCB $01,$E3,$FC,$FF,$8F,$8F,$01,$FF,$FF,$1E
FCB $86,$7F,$93,$93,$01,$49,$FC,$FF,$27,$27
FCB $01,$FF,$FF,$1E,$26,$73,$93,$93,$01,$99
FCB $99,$01,$CF,$27,$27,$01,$3F,$FF,$FF,$1D
FCB $E0,$FF,$27,$27,$01,$F9,$19,$FE,$4E,$4F
FCB $FC,$38,$44,$78,$7F,$FF,$FF,$19,$CE,$63
FCB $27,$27,$01,$F3,$19,$8E,$4E,$4E,$01,$79
FCB $39,$11,$39,$3F,$FF,$FF,$19,$CE,$63,$8F
FCB $8F,$01,$F2,$53,$8F,$1F,$1C,$73,$33,$33
FCB $02,$9F,$FF,$FF,$19,$CC,$C9,$06,$04,$F0
FCB $C3,$24,$0C,$09,$22,$12,$66,$64,$9F,$FF
FCB $FF,$19,$C1,$CC,$70,$F1,$F1,$01,$CF,$30
FCB $E1,$E3,$88,$46,$67,$0E,$3F,$FF,$FF,$FF
FCB $FF,$FF,$FF,$FF,$FF,$AF,$CF,$FF,$FF,$02
FCB $CF,$FF,$CF,$FF,$FF,$01,$CF,$FF,$CF,$FF
FCB $FF,$02,$CF,$FF,$CF,$FF,$CF,$FF,$FF,$02
FCB $CF,$FF,$CF,$FF,$FF,$01,$CF,$FF,$FF,$02
FCB $CF,$FF,$FF,$01,$CF,$FF,$FF,$03,$0F,$FF
FCB $FF,$02,$0F,$FF,$0F,$FF,$FF,$01,$0F,$FF
FCB $0F,$FF,$FF,$02,$0F,$FF,$0F,$FF,$0F,$FF
FCB $FF,$02,$0F,$FF,$0F,$FF,$FF,$01,$0F,$FF
FCB $FF,$02,$0F,$FF,$FF,$01,$0F,$FF,$FF,$01
FCB $CF,$F1,$0F,$CF,$F1,$FF,$0F,$F1,$0F,$CF
FCB $F1,$0F,$F1,$0F,$DF,$F1,$FF,$0F,$F1,$0F
FCB $F1,$0F,$CF,$F1,$FF,$0F,$F1,$0F,$CF,$F1
FCB $0F,$CF,$F1,$FF,$0F,$CF,$F1,$0F,$CF,$F1
FCB $C1,$31,$03,$C1,$31,$FF,$03,$31,$03,$C1
FCB $31,$03,$31,$03,$C1,$31,$FF,$03,$31,$03
FCB $31,$03,$C1,$31,$FF,$03,$31,$03,$C1,$31
FCB $03,$C1,$31,$FF,$03,$C1,$31,$03,$C1,$31
FCB $C1,$01,$03,$C1,$01,$3F,$03,$01,$03,$C1
FCB $01,$03,$01,$03,$C1,$01,$3F,$03,$01,$03
FCB $01,$03,$C1,$01,$3F,$03,$01,$03,$C1,$01
FCB $03,$C1,$01,$3F,$03,$C1,$01,$03,$C1,$01
FCB $01,$02,$03,$01,$01,$01,$0F,$03,$01,$03
FCB $01,$01,$01,$03,$01,$03,$01,$01,$01,$0F
FCB $03,$01,$03,$01,$03,$01,$01,$01,$0F,$03
FCB $01,$03,$01,$01,$01,$03,$01,$01,$01,$0F
FCB $03,$01,$01,$01,$03,$01,$01,$06,$07,$01
FCB $01,$09,$07,$01,$01,$06,$07,$01,$01,$07
FCB $07,$01,$01,$FF,$01,$01,$57,$C1,$01,$01
FCB $0E,$C1,$01,$01,$16,$F1,$01,$01,$0E,$F1
FCB $01,$01,$16,$F1,$01,$01,$0E,$F1,$01,$01
FCB $16,$F1,$01,$01,$0E,$F1,$01,$01,$07,$FF
FCB $01,$01,$0D,$C1,$01,$01,$0E,$C1,$01,$01
FCB $07,$FD,$01,$01,$26,$31,$01,$01,$16,$3D
FCB $01,$01,$24,$0F,$0F,$01,$FF,$01,$01,$0B
FCB $C1,$01,$01,$07,$F1,$01,$01,$0E,$3F,$3F
FCB $01,$FF,$01,$01,$0B,$F1,$01,$01,$07,$F1
FCB $01,$01,$10,$FD,$01,$01,$0B,$F1,$01,$01
FCB $07,$C1,$01,$01,$0E,$0F,$0F,$01,$31,$01
FCB $01,$0B,$F1,$01,$01,$26,$C1,$01,$01,$10
FCB $3D,$01,$01,$05,$C1,$01,$01,$1F,$FF,$01
FCB $01,$03,$00,$01,$F1,$01,$01,$0F,$3D,$01
FCB $01,$0E,$FF,$01,$01,$03,$00,$01,$F1,$01
FCB $01,$0F,$FF,$01,$01,$04,$0F,$0F,$01,$01
FCB $01,$07,$FD,$0F,$01,$01,$02,$00,$01,$F1
FCB $01,$01,$0F,$FF,$01,$01,$04,$3F,$3F,$01
FCB $01,$01,$07,$31,$3F,$01,$01,$02,$00,$01
FCB $C1,$01,$01,$05,$C1,$01,$01,$08,$FD,$01
FCB $01,$13,$00,$01,$01,$11,$31,$01,$01,$04
FCB $0F,$0F,$01,$01,$01,$08,$0F,$01,$01,$02
FCB $00,$01,$01,$07,$03,$01,$C1,$01,$01,$26
FCB $F1,$01,$01,$1F,$3D,$01,$01,$10,$03,$C1
FCB $01,$01,$01,$03,$C1,$01,$01,$0F,$FF,$01
FCB $01,$07,$03,$C1,$01,$01,$06,$07,$E1,$01
FCB $01,$01,$07,$E1,$01,$01,$0F,$FF,$01,$01
FCB $07,$07,$E1,$01,$01,$06,$0F,$F1,$01,$01
FCB $01,$0F,$F1,$01,$01,$0F,$FD,$01,$01,$07
FCB $0F,$F1,$01,$01,$05,$00,$1E,$71,$01,$00
FCB $1E,$71,$01,$01,$0F,$31,$01,$01,$06,$00
FCB $1E,$71,$01,$01,$04,$00,$07,$FC,$71,$00
FCB $07,$FC,$71,$01,$01,$16,$00,$07,$FC,$71
FCB $01,$01,$05,$EF,$FF,$F1,$01,$EF,$FF,$F1
FCB $01,$01,$15,$C1,$01,$EF,$FF,$F1,$01,$01
FCB $02,$0F,$0F,$01,$06,$A1,$FF,$FC,$06,$A1
FCB $FF,$FC,$01,$01,$04,$F1,$01,$01,$0F,$F1
FCB $06,$A1,$FF,$FC,$01,$01,$02,$3D,$3F,$0C
FCB $54,$1F,$FF,$0C,$54,$1F,$FF,$01,$01,$15
FCB $F1,$0C,$54,$1F,$FF,$01,$01,$02,$FF,$01
FCB $08,$2A,$A0,$3F,$08,$2A,$A0,$3F,$01,$01
FCB $02,$03,$C1,$01,$01,$05,$03,$C1,$01,$01
FCB $08,$F1,$08,$2A,$A0,$3F,$01,$01,$02,$FF
FCB $0F,$0C,$05,$55,$40,$0C,$05,$55,$40,$01
FCB $01,$02,$07,$E1,$01,$01,$05,$07,$E1,$01
FCB $01,$08,$C1,$0C,$05,$55,$40,$01,$01,$02
FCB $FD,$01,$06,$00,$00,$01,$31,$06,$00,$00
FCB $01,$31,$01,$01,$02,$0F,$F1,$01,$01,$05
FCB $0F,$F1,$01,$01,$09,$06,$00,$00,$01,$31
FCB $01,$01,$02,$31,$01,$09,$E0,$03,$C9,$09
FCB $E0,$03,$C9,$01,$01,$01,$00,$1E,$71,$01
FCB $01,$04,$00,$1E,$71,$01,$01,$09,$09,$E0
FCB $03,$C9,$01,$01,$04,$0A,$1F,$FC,$29,$0A
FCB $1F,$FC,$29,$01,$00,$07,$FC,$71,$01,$01
FCB $01,$0F,$01,$00,$07,$FC,$71,$01,$01,$01
FCB $00,$01,$01,$06,$0A,$1F,$FC,$29,$01,$01
FCB $04,$0D,$40,$01,$59,$0D,$40,$01,$59,$01
FCB $01,$01,$EF,$FF,$F1,$01,$01,$01,$3F,$01
FCB $01,$01,$EF,$FF,$F1,$01,$01,$01,$00,$01
FCB $01,$06,$0D,$40,$01,$59,$01,$01,$04,$0A
FCB $AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9,$01
FCB $06,$A1,$FF,$FC,$01,$01,$03,$06,$A1,$FF
FCB $FC,$01,$01,$01,$00,$01,$01,$06,$0A,$AA
FCB $AA,$01,$A9,$01,$01,$04,$0D,$55,$55,$01
FCB $59,$0D,$55,$55,$01,$59,$01,$0C,$54,$1F
FCB $FF,$01,$01,$01,$0F,$01,$0C,$54,$1F,$FF
FCB $01,$01,$01,$00,$01,$01,$06,$0D,$55,$55
FCB $01,$59,$01,$01,$04,$0A,$AA,$AA,$01,$A9
FCB $0A,$AA,$AA,$01,$A9,$01,$08,$2A,$A0,$3F
FCB $01,$01,$03,$08,$2A,$A0,$3F,$01,$01,$01
FCB $00,$01,$01,$06,$0A,$AA,$AA,$01,$A9,$01
FCB $01,$04,$0D,$55,$55,$01,$59,$0D,$55,$55
FCB $01,$59,$01,$0C,$05,$55,$40,$01,$01,$03
FCB $0C,$05,$55,$40,$01,$3D,$00,$01,$01,$06
FCB $0D,$55,$55,$01,$59,$01,$01,$04,$06,$0A
FCB $A8,$31,$06,$0A,$A8,$31,$01,$06,$00,$00
FCB $01,$31,$01,$01,$03,$06,$00,$00,$01,$31
FCB $01,$FF,$01,$01,$07,$06,$0A,$A8,$31,$01
FCB $01,$04,$09,$E0,$03,$C9,$09,$E0,$03,$C9
FCB $01,$09,$E0,$03,$C9,$C1,$01,$01,$02,$09
FCB $E0,$03,$C9,$F1,$FF,$01,$01,$07,$09,$E0
FCB $03,$C9,$01,$01,$04,$0A,$1F,$FC,$29,$0A
FCB $1F,$FC,$29,$01,$0A,$1F,$FC,$29,$01,$01
FCB $03,$0A,$1F,$FC,$29,$F1,$FD,$01,$01,$07
FCB $0A,$1F,$FC,$29,$01,$01,$04,$0D,$40,$01
FCB $59,$0D,$40,$01,$59,$01,$0D,$40,$01,$59
FCB $03,$01,$01,$02,$0D,$40,$01,$59,$C1,$31
FCB $01,$01,$07,$0D,$40,$01,$59,$01,$01,$04
FCB $0A,$AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9
FCB $01,$0A,$AA,$AA,$01,$A9,$01,$01,$03,$0A
FCB $AA,$AA,$01,$A9,$01,$01,$09,$0A,$AA,$AA
FCB $01,$A9,$01,$01,$04,$0D,$55,$55,$01,$59
FCB $0D,$55,$55,$01,$59,$01,$0D,$55,$55,$01
FCB $59,$01,$01,$03,$0D,$55,$55,$01,$59,$01
FCB $01,$09,$0D,$55,$55,$01,$59,$01,$01,$04
FCB $0A,$AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9
FCB $01,$0A,$AA,$AA,$01,$A9,$01,$01,$01,$F1
FCB $F1,$01,$0A,$AA,$AA,$01,$A9,$01,$01,$09
FCB $0A,$AA,$AA,$01,$A9,$01,$01,$04,$0D,$55
FCB $55,$01,$59,$0D,$55,$55,$01,$59,$01,$0D
FCB $55,$55,$01,$59,$01,$01,$01,$C1,$C1,$01
FCB $0D,$55,$55,$01,$59,$01,$01,$09,$0D,$55
FCB $55,$01,$59,$01,$01,$04,$06,$0A,$A8,$31
FCB $06,$0A,$A8,$31,$01,$06,$0A,$A8,$31,$01
FCB $01,$03,$06,$0A,$A8,$31,$01,$01,$09,$06
FCB $0A,$A8,$31,$01,$01,$04,$09,$E0,$03,$C9
FCB $09,$E0,$03,$C9,$01,$09,$E0,$03,$C9,$01
FCB $01,$01,$03,$03,$01,$09,$E0,$03,$C9,$01
FCB $01,$09,$09,$E0,$03,$C9,$01,$01,$04,$0A
FCB $1F,$FC,$29,$0A,$1F,$FC,$29,$01,$0A,$1F
FCB $FC,$29,$01,$01,$03,$0A,$1F,$FC,$29,$01
FCB $01,$09,$0A,$1F,$FC,$29,$01,$01,$04,$0D
FCB $40,$01,$59,$0D,$40,$01,$59,$01,$0D,$40
FCB $01,$59,$01,$01,$03,$0D,$40,$01,$59,$01
FCB $01,$09,$0D,$40,$01,$59,$01,$01,$04,$0A
FCB $AA,$AA,$01,$A9,$0A,$AA,$AA,$01,$A9,$01
FCB $0A,$AA,$AA,$01,$A9,$01,$01,$03,$0A,$AA
FCB $AA,$01,$A9,$31,$31,$01,$01,$01,$03,$31
FCB $01,$01,$02,$0A,$AA,$AA,$01,$A9,$01,$01
FCB $04,$0D,$55,$55,$01,$59,$0D,$55,$55,$01
FCB $59,$01,$0D,$55,$55,$01,$59,$01,$01,$03
FCB $0D,$55,$55,$01,$59,$F1,$F1,$01,$01,$01
FCB $03,$F1,$01,$01,$02,$0D,$55,$55,$01,$59
FCB $01,$01,$04,$0A,$AA,$AA,$01,$A9,$0A,$AA
FCB $AA,$01,$A9,$01,$0A,$AA,$AA,$01,$A9,$01
FCB $01,$03,$0A,$AA,$AA,$01,$A9,$F1,$F1,$01
FCB $01,$01,$03,$F1,$01,$01,$02,$0A,$AA,$AA
FCB $01,$A9,$01,$01,$04,$0D,$55,$55,$01,$59
FCB $0D,$55,$55,$01,$59,$01,$0D,$55,$55,$01
FCB $59,$01,$01,$03,$0D,$55,$55,$01,$59,$FF
FCB $FF,$01,$01,$01,$03,$FF,$01,$01,$02,$0D
FCB $55,$55,$01,$59,$01,$01,$04,$06,$0A,$A8
FCB $31,$06,$0A,$A8,$31,$01,$06,$0A,$A8,$31
FCB $01,$01,$03,$06,$0A,$A8,$31,$FF,$FF,$01
FCB $01,$01,$03,$FF,$01,$01,$02,$06,$0A,$A8
FCB $31,$01,$01,$01,$FF,$FF,$02,$E9,$E0,$03
FCB $CB,$E9,$E0,$03,$CB,$FF,$E9,$E0,$03,$CB
FCB $FF,$FF,$03,$E9,$E0,$03,$CB,$FF,$FF,$09
FCB $E9,$E0,$03,$CB,$FF,$FF,$04,$EA,$1F,$FC
FCB $2B,$EA,$1F,$FC,$2B,$FF,$EA,$1F,$FC,$2B
FCB $FF,$FF,$03,$EA,$1F,$FC,$2B,$FF,$FF,$09
FCB $EA,$1F,$FC,$2B,$FF,$FF,$04,$ED,$40,$01
FCB $5B,$ED,$40,$01,$5B,$FF,$ED,$40,$01,$5B
FCB $FF,$FF,$03,$ED,$40,$01,$5B,$FF,$FF,$09
FCB $ED,$40,$01,$5B,$FF,$FF,$04,$EA,$AA,$AA
FCB $01,$AB,$EA,$AA,$AA,$01,$AB,$FF,$EA,$AA
FCB $AA,$01,$AB,$FF,$FF,$03,$EA,$AA,$AA,$01
FCB $AB,$FF,$FF,$09,$EA,$AA,$AA,$01,$AB,$FF
FCB $FF,$04,$ED,$55,$55,$01,$5B,$ED,$55,$55
FCB $01,$5B,$FF,$ED,$55,$55,$01,$5B,$FF,$FF
FCB $03,$ED,$55,$55,$01,$5B,$FF,$FF,$09,$ED
FCB $55,$55,$01,$5B,$FF,$FF,$04,$EA,$AA,$AA
FCB $01,$AB,$EA,$AA,$AA,$01,$AB,$FF,$EA,$AA
FCB $AA,$01,$AB,$FF,$FF,$03,$EA,$AA,$AA,$01
FCB $AB,$FF,$FF,$09,$EA,$AA,$AA,$01,$AB,$FF
FCB $FF,$04,$ED,$55,$55,$01,$5B,$ED,$55,$55
FCB $01,$5B,$FF,$ED,$55,$55,$01,$5B,$FF,$FF
FCB $03,$ED,$55,$55,$01,$5B,$FF,$FF,$09,$ED
FCB $55,$55,$01,$5B,$FF,$FF,$04,$E1,$AA,$AA
FCB $01,$B3,$E1,$AA,$AA,$01,$B3,$FF,$E1,$AA
FCB $AA,$01,$B3,$FF,$FF,$03,$E1,$AA,$AA,$01
FCB $B3,$FF,$FF,$09,$E1,$AA,$AA,$01,$B3,$FF
FCB $FF,$04,$F9,$F5,$57,$CF,$F9,$F5,$57,$CF
FCB $FF,$F9,$F5,$57,$CF,$FF,$FF,$03,$F9,$F5
FCB $57,$CF,$FF,$FF,$09,$F9,$F5,$57,$CF,$FF
FCB $FF,$04,$FE,$1F,$FC,$3F,$FE,$1F,$FC,$3F
FCB $FF,$FE,$1F,$FC,$3F,$FF,$FF,$03,$FE,$1F
FCB $FC,$3F,$FF,$FF,$09,$FE,$1F,$FC,$3F,$FF
FCB $FF,$05,$E0,$03,$FF,$FF,$01,$E0,$03,$FF
FCB $FF,$02,$E0,$03,$FF,$FF,$05,$E0,$03,$FF
FCB $FF,$0B,$E0,$03,$FF,$FF,$59,$FE,$07,$FF
FCB $FF,$25,$F9,$F9,$01,$FF,$FF,$25,$FB,$FD
FCB $FF,$C3,$FF,$FF,$03,$CF,$FF,$1F,$EF,$FF
FCB $87,$03,$39,$FF,$C3,$FF,$FF,$04,$CF,$87
FCB $87,$01,$E3,$FF,$FF,$0C,$F7,$0E,$FF,$99
FCB $FF,$FF,$05,$9F,$CF,$FF,$CF,$99,$11,$FF
FCB $99,$FF,$FF,$04,$8F,$33,$33,$01,$C3,$FF
FCB $FF,$0C,$F6,$66,$FF,$3F,$87,$23,$33,$23
FCB $8F,$89,$93,$83,$FF,$CF,$99,$01,$FF,$3F
FCB $87,$23,$23,$01,$FF,$FF,$01,$CF,$33,$33
FCB $01,$93,$FF,$FF,$0C,$F6,$7E,$FF,$3F,$33
FCB $99,$33,$89,$CF,$33,$89,$CF,$FF,$CF,$83
FCB $01,$FF,$3F,$33,$89,$99,$FF,$FF,$01,$CF
FCB $83,$87,$33,$FF,$FF,$0C,$F6,$66,$FF,$3F
FCB $33,$99,$33,$99,$CF,$33,$99,$CF,$FF,$CF
FCB $99,$29,$FF,$3F,$33,$99,$99,$01,$FF,$FF
FCB $01,$CF,$F3,$33,$01,$FF,$FF,$0C,$F7,$0E
FCB $FF,$99,$33,$83,$83,$01,$9F,$CF,$83,$99
FCB $CB,$FF,$CF,$99,$39,$FF,$99,$33,$9F,$83
FCB $CF,$FF,$CF,$E7,$33,$F3,$FF,$FF,$0C,$FB
FCB $FD,$FF,$C3,$87,$9F,$F3,$0F,$87,$F3,$19
FCB $E7,$FF,$87,$03,$39,$FF,$C3,$87,$0F,$9F
FCB $CF,$FF,$03,$8F,$87,$E1,$FF,$FF,$0C,$F9
FCB $F9,$01,$FF,$FF,$02,$0F,$07,$FF,$FF,$01
FCB $07,$FF,$FF,$09,$0F,$FF,$FF,$12,$FE,$07
FCB $FF,$FF,$1E,$00,$00,$00,$00,$00,$00,$00
END
De plus la programmation de l'intro d'Alley Cat en Basic est impossible. Même en Basic compilé. Il faut à la fois animer le chat et jouer la musique. Le MO6 n'a pas de timer, il faut donc compter les cycles des instructions exécutées. Seul l'assembleur le permet.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: Langage de programmation des jeux sur Thomson
LDD #$0000 ; debut de l'ecran ($0000 pour MO6)
Tu as raison, 6000 sur MO6 c'est là que j'avais l'habitude de mettre le programme. Tu vois? Je n'ai pas travaillé avec l'assembleur pour MO6 depuis longtemps et je ne me souviens plus les adresses. Pour écrire en ASM il faut bien connaître la langage et la machine, on obtient certainement le meilleur résultat mais combien ça coûte en termes de temps et d'efforts ? Le BASIC est lent et les lignes numériques sont horribles, mais si je dois prototyper rapidement, avec deux lignes je saute ce que je dois faire avec ASM avec 50 lignes de code en me souciant de chaque pixel à l'écran.
Je comprends bien que pour les experts ASM la solution la plus naturelle est celle-ci, mais il y a toujours l'inconvénient d'avoir à écrire pour une seule machine (même maintenant ce qui est écrit pour TO doit être changé pour MO). Avec un compilateur multiplateforme (comme l'ugBasic) vous auriez également la chance d'écrire le code une seule fois et de le porter sur différentes plateformes avec quelques astuces - il est vrai que sur du matériel plus sophistiqué comme le C64 ce serait du gâchis, mais c'est aussi dépend de la formule qui le développeur propose. Si vous n'avez pas forcément l'intention de pousser les limites de la machine, un bon jeu peut être amusant même sans utiliser des puces dédiées, dans ce cas il serait très pratique de pouvoir l'écrire et l'amener sur différents 8 bits en un temps limité.
Tu as raison, 6000 sur MO6 c'est là que j'avais l'habitude de mettre le programme. Tu vois? Je n'ai pas travaillé avec l'assembleur pour MO6 depuis longtemps et je ne me souviens plus les adresses. Pour écrire en ASM il faut bien connaître la langage et la machine, on obtient certainement le meilleur résultat mais combien ça coûte en termes de temps et d'efforts ? Le BASIC est lent et les lignes numériques sont horribles, mais si je dois prototyper rapidement, avec deux lignes je saute ce que je dois faire avec ASM avec 50 lignes de code en me souciant de chaque pixel à l'écran.
Je comprends bien que pour les experts ASM la solution la plus naturelle est celle-ci, mais il y a toujours l'inconvénient d'avoir à écrire pour une seule machine (même maintenant ce qui est écrit pour TO doit être changé pour MO). Avec un compilateur multiplateforme (comme l'ugBasic) vous auriez également la chance d'écrire le code une seule fois et de le porter sur différentes plateformes avec quelques astuces - il est vrai que sur du matériel plus sophistiqué comme le C64 ce serait du gâchis, mais c'est aussi dépend de la formule qui le développeur propose. Si vous n'avez pas forcément l'intention de pousser les limites de la machine, un bon jeu peut être amusant même sans utiliser des puces dédiées, dans ce cas il serait très pratique de pouvoir l'écrire et l'amener sur différents 8 bits en un temps limité.
-
- Messages : 7964
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Langage de programmation des jeux sur Thomson
Perso le ugBasic me botte bien. Il me fait penser au pseudo GFA-Basic que j'avais moi-même fait à l'époque sur mon TO9. La notion de procédures avec des variables locales permet quelques fantaisies sympathiques (et portables sur plein de machines du coup.) Pour l'instant le code 6809 pique les yeux car il est adapté du 6502 qui est fondamentalement un 8 bits là où le 6809 est un 8/16 avec deux accus et des modes d'adressages de folie pratiquement inégalés sur les autres 8 bits. Je ne désespère pas pouvoir bricoler dessus une fois que j'aurai maitrisé ses entrailles.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Langage de programmation des jeux sur Thomson
Hmm du côté de l'Atari ST, il y a Alice Pascal (le plus ancien), HiSpeed Pascal (conmpatible Turbo Pascal 5) et Pure Pascal (compatible TP 7)Fool-DupleX a écrit : ↑08 oct. 2021 10:54 PascalABC.net est tres sympa aussi, dommage qu'il genere du code .NET. Mais le couple Free Pascal/Lazarus est probablement le meilleur actuellement.
En fait, on peut dire qu'à partir de Turbo Pascal 4, ce pascal se rapproche de Modula 2 (programmation modulaire) puis d'Obéron (généricité), notamment avec Delphi et Free Pascal.
Mais en vérité, depuis TP4 (modularité et pointeurs), il n'y a pas eu d'évolution majeure de Pascal (A part le type Objet), parce que le langage en lui même était déjà abouti.
Free Pascal n'apporte pas grand chose de plus que TP 5.5 (Ou l'objet est apparu), si ce n'est des Unités supplémentaire (et la généricité qui en vérité existait déjà dans les versions de pascal précédente (Enregistrements de type Variantes)
Re: Langage de programmation des jeux sur Thomson
Il est devenu obsolète dès le millieu des années 80.
D'autre part, comme je l'ai écrit, Pascal introduit + de type numériques que le C ET le type ensemble.
Pascal a été le premier à utiliser le P-Code (Ce qu'a fait le Java 18 ans plus tard!!), notamment Pascal UCSD. C'est d'ailleurs un défaut d'avoir ceci (PCode) sur la version Thomson. Si sur Thomson on avait eux sur la famille TO, un compil Pascal qui intègre les possibilités de l'UCSD, qui soit compilable et qui soit créé pour le DOS des Thomson (et pas le DOS spécifique à UCSD) on aurait pu développer de sacrés bon logiciels, y compris des Jeux avec des partie assembleur.
Pour info, Basic est bien plus médiocre que Pascal pour écrire des logiciels, parce que Pascal peut être compilé, peut intégrer des parties assembleur, qu'il n'y a pas ce foutu système de numéro de lignes, et qu'il est structuré.
C'est un langage au paradigme "fonctionnel". Ca signifie que ça intègre notamment les fonctions récursives. Je vous met au défi de faire des fonctions récursives en Basic!! Je l'avais fait quand j'étais étudiant au CNAM pour écrire la fonction de Quick Sort (base sur les fonctions récursives, en Pascal) en Basic, à grand coup de Piles, ça a été galère et en plus, au final, j'ai eu un résultat beaucoup plus lent que si c'était en Pascal compilé. Le paradigme fonctionnel n'est pas vraiment facilement programmable en Basic, en Pascal SI, et franchement, créer un jeu de labyrinthe en Pascal en créant son algorithme de labyrinthe parfait, se fait en moins de 2h, alors que le faire en Basic, ou pis en Assembleur (même si le 6809 possède des piles), c'est franchement galère pour un novice.
Le but d'un langage est de pouvoir développer rapidement (et sans bugs) des logiciels performant, rapidement et capable de répondre à tous les besoins.Franchement si à l'époque où j'étais au CNAM, il y avait eu un mix entre PascalBase et Pascal UCSD existant sur Thomson, ça n'aurait arrangé. C'est d'ailleurs dans ce but que j'ai recherché le langage Pascal sur Thomson (que j'ai fourni à Daniel récemment)..
Le Pascal a été le langage enseigné dans les facs de science, grandes écoles etc.. pendant plus de 20 ans. C'est pas pour rien.
Algol a eu une première version en 1960.. Si tu lis l'article sur' l'algol, tu vois qu'il a eu énormément de défauts (l'absence de fonctions standards, mauvaise adaptation aux logiciels de gestion etc).. En fait la première version "valable" d'Algol était Algol 68 sur lequel Pascal est basé et en est une simplification... Algol 68 permet, en +, l'orthogonalité (ce que ne permettait pas les versions précédentes), tout comme Pascal. Algol permet aussi de créer de nouveaux types (et pas les versions antérieures) ce que fait Pascal.__sam__ a écrit : ↑07 oct. 2021 18:53Algol est un langage impératif avec de la récursion, des tableaux dynamiques et tout. Il date de 1958, au moins 12 ans avant le Pascal.Et d'ailleurs le Pascal a été le premier langage de type impératif existant au monde (historiquement).
En langage grand public, Pascal a été le premier à intégrer une majorité des propriétés d'Algol 68. Pascal a éxisté dans la majorité des ordi 8 bits, ceux 16 bits ... Alors que pour le C... A ma connaissance, il a été implanté sur les ordinateurs Atari ST en complément du GFA Basic, et a largement servi au dév de logiciel sur cette plateforme, mais pour les ordinateurs 8 bits ?
Quand ces extensions ont été implantées dans tous les compilateurs Pascal de l'époque (sur PC, Atari ST, Amiga voire d'autres), ça devient des normes de fait"... Tiens j'ai un exemple dans la vie de tous les jours, le mot "Taxonomie" (que j'ai beaucoup utilisé en biologie pour la classification des animaux) est utilisé à tout va au niveau de l'UE pour la classification des types d'énergie, et pourrant, la définition de Taxonomie est encore extrêmement liée à la classification des animaux et végétaux.Non ca n'est pas le Pascal qui a évolué, mais certains compilateurs avec des extensions propriétaires qu'ils ont refusés de normaliser.Pascal a évolué dans bien des points, à la fin des années 80 Pascal intégrait les pointeurs de fonction, pointeurs de variables, les type Pchar (C'est l'équivalent du *Char du C) et des types qu'on ne trouve pas en C (comme les "ensemble" ou les "liste". Pascal est bcp plus adapté à l'écriture de programme de calcul scientifique que le C. Il inclut aussi l'OO (pour ceux qui sont fan de ça).
Ca intervient bien après l'existant comme je le dis ci dessus...Nota: l'extension de 1990 définit enfin ceci principalement motivés par le standard ANSI-C de 1989:Et cela 20ans après le C.
- les unités de compilations et les exports de symboles pour de la programmation modulaire.
- Les strings y sont enfin +/- définies et manipulables (concaténation, comparaison avec padding par des blancs). Bref ce ne sont plus juste des constantes pour le writeln() de la version de 1983.
- Les fichiers à accès direct avec Seek() sont enfin supportés.
- On peut enfin ouvrir un fichier séquentiel en mode ajout ("append").
- L'exponentiation "**" (pour calculer x puissance y).
- Et surtout le "Short Circuit Boolean Evaluation" : Enfin "while (i<max) and (tab[ i ]!=n) do i = succ(i);" ne fait pas une erreur de débordement de tableau quand i=max.
Par contre pour l'opérateur "**" suis pas sûr que ça existe vraiment en Pascal... En fait non, ça n'existe pas en Pascal.
D'ailleurs tu parles du Pascal ou du C ici ? Parce que "while (i<max) and (tab[ i ]!=n)" n'est pas du Pascal, l'opérateur différence est "<>" en Pascal et l'attribution est ":="
"20 ans après le C" ??? Le C a été créé (enfin les prémices) en 1972... Donc au mieux c'est 18 ans. Mais je doute que le C ait inclut toutes ces possibilité dès le début.
Tout ça est possible en Pascal mais comme le Pascal se veut un langage à la compilation optimisée (en 1 seule passe!! Même l'assembleur 3.0 de Thomson le fait en 2 passes), les opérateurs ternaires et "**" sont des gadgets dans le but d'écrire le moins de code caractères possible mais ça ne signifie pas un code optimisé. L'opérateur ternaire se fait en un "if then else", ça fait du code clair et compréhensible. Tout comme l'opérateur "spaceship" en PHP c'est du gadget! C'est l'équivalent de "if truc<0 then .. else if truc=0 then .. else ..". En fait on pourrait écrire une fonction en pascal "ifthenelse" contenant différents paramètres dont des pointeurs de fonction.les bitfields, les shortcut dans les expressions booléenes avant 1990, les opérateurs de post/pre incrementation/décrémentation, l'opérateur ternaire ?De toutes façons, Pascal est reconnu actuellement comme l'équivalent du C, il n'y a rien que le C fasse que le Psscal ne fasse pas, par contre l'inverse n'est pas forcément vrai...
Maintenant faut savoir que le Pascal permet la surcharge d'opérateur!! Le "+" sert aussi bien pour les types numériques que chaine. AND et OR existe aussi bien en temps qu'opérateurs logique QUE booléens.Le C non...
Le Pascal est capable de gérer 2 types de chaines de caractères!! Le type Pascal (le premier octet sert à donner la taille de la chaine, entre 1 et 255) et le type "C" (le type Pchar).
Je continue à déveloper mon site internet spécial Pure Pascal (et HiSpeed Pascal dans la majorité des cas) et quand tu vois que dans l'Unité system il y a un tas de fonctions existant en standard (alors qu'en C, il faut appeler les librairies pour avoir l'équivalent)... Quand tu vois les possibilités des unités Graph (permettant de tracer n'importe quel type de figure, y compris ellipse et qui permet de vérifier les capacités du pilote graphique intégré directement), CRT (tout sur la manipulation de caractères... Notamment positionner le curseur sur l'écran à un endroit spéc, et plein d'autres choses sur la position du curseur (je viens de vérifier sur la doc de Lattice C, il n'y a PAS d'équivalent!!)) pourquoi continuer à rester sur C, C++ ou pis sur Java ?.
En fait le Pascal réunit tout ce qui fat la force du C, Basic, Java, et d'ailleurs le langage Basic a été largement inspiré par le Pascal (les instructions graphiques sont souvent issus des procédures Pascal), mais évidemment, en temps que langage interprété, il est au moins 10 fois plus lent que le Pascal compilé.
OUI je connais bien (c'est issu de "Delpho" qui est un environnement de développement graphique basé sur Turbo Pascal 7 et aud delà ou de compilateur compatibles), MAIS tout ce que tu décris là EXISTAIT déjà pour les compilateurs pascal de 1990 (et pour ce qui est des opérateurs de logique ou booléen, ça existe dpeuis au moins 1980, puisque présent même dans les Pascal Thomson), sauf la généricité. Free Pascal est devenu l'équivalent d'Oberon en fait (le dernier descendant de Pascal) mais en ayant gardé ce qu'oberon a supprimé.As-tu déjà été voir du coté de Free Pascal, il est présent sur pas mal de machines et est assez puissant. Il supporte les opérations bit-à-bit, les Pchar, les pointeurs sur fonctions, et les champs statiques et le typage générique. De fait il dépasse la norme 1990 et se rapproche de ce dont tu parles avec le Pure Pascal sur Atari. Dommage que la norme n'ait pas évoluée avec ces extensions.
D'ailleurs, je suis en train d'ajouter des pages d'algorithmes perso (la première étant celle-ci)pour faire évoluer les langages Pascal d'Atari ST (notamment Pure Pascal, mais aussi HiSpeed Pascal) vers des choses + modernes dont Free Pascal.
Concernant le thomson (TO8/TO9/TO9+ mais aussi, peut-être la génération précédente), ce qu'il faudrait pour le pascal est un mix entre Pascal Base (malheureusement trop limité en terme de types, gestion de la RAM, compilation trop lente et manque des fonctions et procédures pour Thomson, mais ça produit du code au moins 10 fois plus rapide que le Basic)... Il faudrait quelque chose comme le Kyan Pascal (Qui existe aussi sur les Commodore).
-
- Messages : 7964
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Langage de programmation des jeux sur Thomson
Tu chipotes: 18 ou 20 ans c’est pareil."20 ans après le C" ??? Le C a été créé (enfin les prémices) en 1972... Donc au mieux c'est 18 ans.
Jettes un œil à ugbasic. Il y a moyen de faire des trucs bien avec. Si ça se trouve tu va y retrouver ce qui te plais dans les Pascals modernes, mais qui n’est pas présent sur les Pascal Thomson.Pour info, Basic est bien plus médiocre que Pascal pour écrire des logiciels, parce que Pascal peut être compilé, peut intégrer des parties assembleur, qu'il n'y a pas ce foutu système de numéro de lignes, et qu'il est structuré
Oui c’est une typo. On s’en fiche car ici on parle de l’evaluation booléenne raccourcie qui est impossible dans la sémantique standardisée du Pascal qui requiert d’évaluer les deux arguments des opérateurs logiques binaires et donc fait une erreur de débordement de tableau dans ce cas.Pascal... En fait non, ça n'existe pas en Pascal.
D'ailleurs tu parles du Pascal ou du C ici ? Parce que "while (i<max) and (tab[ i ]!=n)" n'est pas du Pascal, l'opérateur différence est "<>" en Pascal et l'attribution est ":="
Non, pas que. Là différence est sémantique et progonde: l’opérateur ternaire est une expression alors que if/then/else est une instruction.les opérateurs ternaires et "**" sont des gadgets dans le but d'écrire le moins de code caractères
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Langage de programmation des jeux sur Thomson
Les boules le site est HS.Fool-DupleX a écrit : ↑07 oct. 2021 11:31 Pour les curieux, j'invite à visiter le site http://www.turbopascal.org. C'est un hobbyiste qui a reversé le compilateur turbo-pascal et qui l'a ensuite réimplémenté en turbo-pascal. Son compilateur est plus gros et plus lent (puisque le vrai était écrit 100% en assembleur), mais il est 100% fidèle à la variante Borland du langage et surtout, il produit un binaire identique au compilateur d'origine. C'est très intéressant à étudier.
Edit: nouveau lien: https://turbo51.com/compiler-design/tpc ... rbo-pascal
Merci Neotenien de défendre le langage Pascal.
On a tendance à comparer des langages entre eux alors que ceux ci ont évolués.
C: une fois je me suis fais avoir en essayant de recompiler du K&R sur un compilo beaucoup plus récent.
BASIC: entre le BASIC/GWBASIC celui avec les numéros de lignes et ne serait ce qu'un QBASIC
PASCAL: il s'est bien "Cifié" pleins d'extensions pour être compatible avec les librairies et dll c/windows.
https://www.franck-pissotte.fr/ vide grenier
-
- Messages : 7964
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Langage de programmation des jeux sur Thomson
Un peu hors sujet (oublions les Thomson et les jeux un instant), mais néanmoins intéressant:
On voit que le règne du pascal a été de 1981 à 1985 (5 ans). Puis le C de 1986 à 2000 (14 ans), puis le Java de 2001 à 2018 (18 ans), et à présent c'est Python qui tient le haut de la rampe. L'assembleur à "topé" en 1970 à la 4e place, mais ce qui me surprends est de ne pas avoir vu passer le Forth dans la liste, alors que j'en entendais parler dans les revues "sérieuses" (eg. science) des années 80.
On voit que le règne du pascal a été de 1981 à 1985 (5 ans). Puis le C de 1986 à 2000 (14 ans), puis le Java de 2001 à 2018 (18 ans), et à présent c'est Python qui tient le haut de la rampe. L'assembleur à "topé" en 1970 à la 4e place, mais ce qui me surprends est de ne pas avoir vu passer le Forth dans la liste, alors que j'en entendais parler dans les revues "sérieuses" (eg. science) des années 80.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
- fneck
- Site Admin
- Messages : 17489
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: Langage de programmation des jeux sur Thomson
Intéressant comme vidéo. Par contre je n'ai pas compris qu'elle était l'échelle ?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3