Notifications
Clear all

XA Assembler  

  RSS

Sheld67
(@sheld67)
Membre Redacteur
Inscription: Il y a 9 mois
Posts: 13
24 mai 2020 17 h 57 min  

Bonjour La Communauté,

Sur les conseils de DBug, je souhaite réaliser mes programmes sources L/M grâce à l'assembleur XA disponible dans OSDK.

Savez-vous où je peux trouver une documentation fournie, sur l'utilisation de cet assembleur (ainsi que des exemples) ?

Avec mes remerciements.

Sheld67


Quote
Topic Tags
didier_v
(@didier_v)
Trusted Member Redacteur en Chef
Inscription: Il y a 2 ans
Posts: 89
24 mai 2020 18 h 46 min  

Hello, sur http://osdk.defence-force.org/ tu trouveras tout ce qu'il faut. Télécharges osdk, lit le numéro spécial été de (2014? ou 2015 avec sa doc en francais) et utilise un des exemples inclus (full assembleur)

Je ne pense pas qu'il y ai besoin d'infos supplémentaires. Ou alors sur des points très spécifiques pour lesquels une question ici ou sur defence-force te permettra de réussir tes projets.

Bon courage, Didier


RépondreQuote
jede
 jede
(@jede)
Membre
Inscription: Il y a 1 an
Posts: 146
24 mai 2020 22 h 54 min  
Posté par: @sheld67

Bonjour La Communauté,

Sur les conseils de DBug, je souhaite réaliser mes programmes sources L/M grâce à l'assembleur XA disponible dans OSDK.

Savez-vous où je peux trouver une documentation fournie, sur l'utilisation de cet assembleur (ainsi que des exemples) ?

Avec mes remerciements.

Sheld67

Il faut regarder les codes sources sur le serveur svn defence force notamment


RépondreQuote
Sheld67
(@sheld67)
Membre Redacteur
Inscription: Il y a 9 mois
Posts: 13
25 mai 2020 20 h 00 min  
Posté par: @didier_v

Télécharges osdk, lit le numéro spécial été de (2014? ou 2015 avec sa doc en francais) et utilise un des exemples inclus (full assembleur).

On parle en effet de DBug dans le numéro spécial de Juillet-Août 2014 (page 51).

Quant à la programmation sous OSDK, elle débute dans le CEO-Mag n°303-304 de Juillet-Août 2015, et devait s'étaler sur 5 articles mais la suite n'a jamais été publiée...!


RépondreQuote
didier_v
(@didier_v)
Trusted Member Redacteur en Chef
Inscription: Il y a 2 ans
Posts: 89
25 mai 2020 21 h 33 min  

Ben non, j'ai pas eu le temps de faire la suite ... 


RépondreQuote
Sheld67
(@sheld67)
Membre Redacteur
Inscription: Il y a 9 mois
Posts: 13
31 mai 2020 19 h 30 min  

J’éprouve quelques difficultés avec XA et j’explique pourquoi.

 

Habitué à utiliser FRASM depuis six ans, voici ce qu’il me manque le plus dans XA :

  • Listing d’assemblage avec adresses réelles
  • Localisation exacte des erreurs dans le listing d’assemblage

J’ai par exemple l’erreur suivante lorsque je tente d’assembler un programme : c:\OSDK\headscr.s(36):  9541:Branch out of range error.

Par contre, je n’ai aucune indication concernant la ligne (36) et je ne sais donc pas où se trouve cette erreur exactement.

Y a-t-il moyen d’obtenir le même genre de listing d’assemblage que sous FRASM ?

Sheld67


RépondreQuote
didier_v
(@didier_v)
Trusted Member Redacteur en Chef
Inscription: Il y a 2 ans
Posts: 89
1 juin 2020 6 h 11 min  

Hello,

Normalement, l'erreur est à la 36e ligne de ton fichier headscr.s, information que tu dois avoir dans ton éditeur de code


RépondreQuote
Sheld67
(@sheld67)
Membre Redacteur
Inscription: Il y a 9 mois
Posts: 13
1 juin 2020 18 h 34 min  
Posté par: @didier_v

Normalement, l'erreur est à la 36e ligne de ton fichier headscr.s, information que tu dois avoir dans ton éditeur de code

Je me doutais de cette réponse, sauf que les lignes de mon fichier source "headscr.s" ne sont pas numérotées et que je me vois mal les compter une à une jusqu'à trouver la bonne (surtout si j'ai un fichier qui comporte plus de 1000 lignes) !

N'y a-t-il pas une option qui permette de créer un listing d'assemblage XA comme c'est le cas pour FRASM avec le connecteur -l (qui référence les erreurs directement dans le listing créé) ?


RépondreQuote
jede
 jede
(@jede)
Membre
Inscription: Il y a 1 an
Posts: 146
1 juin 2020 22 h 33 min  

@sheld67 Je n'ai pas compris ce qu'étais le listing sous frasm. Est ce que tu parles des vecteurs de tous les labels ?

 

Normalement, avec un éditeur texte, tu as les lignes numérotées, et donc tu peux retrouver la ligne concernée. Ou alors je n'ai pas compris 🙂

 

 


RépondreQuote
didier_v
(@didier_v)
Trusted Member Redacteur en Chef
Inscription: Il y a 2 ans
Posts: 89
2 juin 2020 2 h 24 min  

@sheld67 : Je ne sais pas ce que tu utilise comme éditeur de texte, par exemple notepad ne donne effectivement aucune indication.

Si c'est le cas, tu aurais interet à utiliser un éditeur plus moderne ; il y a le choix, entre notepad++ ou l'excellent visual studio code


RépondreQuote
jede
 jede
(@jede)
Membre
Inscription: Il y a 1 an
Posts: 146
2 juin 2020 9 h 48 min  

ok @sheld67 si effectivement tu n'as pas d'éditeur qui donne les lignes cela est compliqué 🙂

 

Visual studio code a la coloration syntaxique XA (c'est moi qui l'ai faite cette extension mais elle est largement perfectible :). Sur Visual Studio code, on a accès au shell en dessous, et même se connecter en remote  sur machine virtuelle en shell pour avoir un vrai shell linux (si besoin)

 


RépondreQuote
didier_v
(@didier_v)
Trusted Member Redacteur en Chef
Inscription: Il y a 2 ans
Posts: 89
2 juin 2020 14 h 52 min  

PS : J'utilise aussi Visual Studio Code.

Il y a pas mal d'avantages comme le lien avec Github, et il faudra que je mette les colorations de XA, CC65 ...

Notepad ++ est aussi installé sur mon disque mais il faudrait que je l'enleve je pense. Sinon, il y a des tonnes d'éditeurs gratuits.  


RépondreQuote
Sheld67
(@sheld67)
Membre Redacteur
Inscription: Il y a 9 mois
Posts: 13
2 juin 2020 19 h 19 min  

J'utilise, jusqu'à présent, l'éditeur NoteTab Light qui est dépourvu de numérotations de lignes (d'où ma circonspection face à l'erreur 'c:\OSDK\headscr.s(36):  9541:Branch out of range error').

Pour ce qui est du listing d'assemblage délivré par FRASM, voici celui de mon fichier source 'headscr.asm' (affichage d'un score en haute résolution).

L'erreur détectée par XA semble se trouver en $952C, ce qui est d'autant plus curieux que FRASM réalise l'assemblage sans difficultés...

0000007f CNT 00000080 X_CRS 00000081 DECADE
00000082 INDEX_SCR 0000950f LLOOP 00009567 LINIT_CRS
000095a5 LSCORE 0000955b LDISPLAY_CHAR 0000951f LLOOP1
00009555 LGET_KEY 00009527 LLABEL1 0000957f LINC_SCR
00009587 LINC_SCR_LOOP 000095aa LSCORE_SWITCH
; Affichage score en mode HIRES / vidéo inverse

0x7f CNT equ $7F ; compteur de caractères
0x80 X_CRS equ $80 ; abscisse X
0x81 DECADE equ $81 ; compteur incrément dizaines
0x82 INDEX_SCR equ $82 ; index SCORE

 

0x9500 org $9500

9500 a2 8e ldx #142 ; affichage débute en 136,120 (par la fin)
9502 86 80 stx X_CRS
9504 a9 04 lda #4
9506 85 7f sta CNT ; 5 caractères à afficher
9508 4a lsr a
9509 85 81 sta DECADE
950b a0 03 ldy #3
950d 84 82 sty INDEX_SCR
950f 20 67 95 LLOOP jsr LINIT_CRS ; s/p init adresse curseur
9512 bd a5 95 lda LSCORE,X
9515 8d e1 02 sta $02E1 ; caractère ASCII à afficher
9518 20 5b 95 jsr LDISPLAY_CHAR
951b c6 7f dec CNT
951d 10 f0 bpl LLOOP ; poursuit jusqu'au dernier caractère
951f 20 55 95 LLOOP1 jsr LGET_KEY
9522 c9 46 cmp #70 ; compare à la touche 'F'
9524 d0 01 bne LLABEL1
9526 60 rts
9527 20 7f 95 LLABEL1 jsr LINC_SCR
952a c6 81 dec DECADE
952c d0 f1 bne LLOOP1
952e a0 02 ldy #2
9530 84 81 sty DECADE
9532 a2 88 ldx #136
9534 86 80 stx X_CRS
9536 20 67 95 jsr LINIT_CRS ; se positionne sur les dizaines
9539 a6 82 ldx INDEX_SCR ; pointe sur les dizaines
953b bd a5 95 lda LSCORE,x
953e 8d e1 02 sta $02E1
9541 20 5b 95 jsr LDISPLAY_CHAR ; efface caractère courant (réaffiche le même caractère)
9544 a6 82 ldx INDEX_SCR ; pointe sur les dizaines
9546 fe a5 95 inc LSCORE,x
9549 bd a5 95 lda LSCORE,x
954c 8d e1 02 sta $02E1
954f 20 5b 95 jsr LDISPLAY_CHAR ; affiche nouveau caractère
9552 4c 1f 95 jmp LLOOP1
9555 20 78 eb LGET_KEY jsr $EB78
9558 10 fb bpl LGET_KEY
955a 60 rts
955b a6 80 LDISPLAY_CHAR ldx X_CRS
955d a0 78 ldy #120
955f a9 02 lda #2
9561 8d e5 02 sta $02E5 ; FB code (vidéo inverse)
9564 4c 5d f1 jmp $F15D ; afficher le caractère aux coordonnées x,y (jsr/rts)
9567 a5 80 LINIT_CRS lda X_CRS
9569 38 sec
956a e9 06 sbc #6
956c 85 80 sta X_CRS
956e aa tax
956f a0 78 ldy #120
9571 a9 01 lda #1
9573 8d 12 02 sta $0212 ; FB code (vidéo normale)
9576 20 e8 ee jsr $EEE8 ; CURSET 136,120,1
9579 a2 00 ldx #0
957b 8e e3 02 stx $02E3 ; jeu de caractère 0 (pour commande CHAR)
957e 60 rts
957f a0 06 LINC_SCR ldy #6
9581 84 7f sty CNT
9583 a2 00 ldx #0
9585 a0 00 ldy #0
9587 bd d6 b2 LINC_SCR_LOOP lda $B2D6,x
958a 59 aa 95 eor LSCORE_SWITCH,y
958d 9d d6 b2 sta $B2D6,x
9590 bd d7 b2 lda $B2D7,x
9593 59 ab 95 eor LSCORE_SWITCH+1,y
9596 9d d7 b2 sta $B2D7,x
9599 8a txa
959a 18 clc
959b 69 28 adc #40
959d aa tax
959e c8 iny
959f c8 iny
95a0 c6 7f dec CNT
95a2 10 e3 bpl LINC_SCR_LOOP
95a4 60 rts
95a5 30 30 30 30 30 LSCORE db 48,48,48,48,48 ; valeur SCORE
95aa 02 08 00 08 01 28 LSCORE_SWITCH db $02,$08,$00,$08,$01,$28,$02,$20,$03,$00,$00,$00,$00,$00
95b0 02 20 03 00 00 00 00 00
ERROR SUMMARY - ERRORS DETECTED 0 - WARNINGS 0


RépondreQuote
jede
 jede
(@jede)
Membre
Inscription: Il y a 1 an
Posts: 146
2 juin 2020 21 h 31 min  

il faudrait copier coller plutôt le code source. Mais, je ne sais plus si XA est capable d'assembler avec un label et un opcode sur la même ligne (et sans le : pour le label)


RépondreQuote
Share: